Sequelize: Bagaimana untuk memadamkan artikel berkaitan pengguna?
P粉212971745
P粉212971745 2024-02-25 17:24:16
0
1
436

Saya mempunyai model artikel di mana setiap artikel berkaitan dengan pengguna:

const Articles = db.define("Articles", {
    title: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    description: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    img_url: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    author: {
        type: DataTypes.STRING,
        allowNull: false,
    },
});

Articles.belongsTo(User);

module.exports = Articles;

Bagaimana untuk memadam semua artikel yang dibuat oleh pengguna apabila mereka memadamkan akaun mereka?

Saya mempunyai fungsi berikut untuk memadam pengguna:

static async deleteUserById(req, res) {
    const id = req.params.id;

    const user = await User.findOne({
        where: {
            id: id,
        },
    });

    if (!user) {
        res.status(404).json({ msg: "User not found!" });
        return;
    }

    try {
        await User.destroy({
            where: {
                id: id,
            },
        });

        res.status(200).json({ msg: "Account successfully deleted!" });
    } catch (msg) {
        res.status(500).json({ msg: "Oops... an error has occurred!" });
    }
}

Saya berpindah dari mongodb ke mysql dan saya agak tersesat dalam perhubungan

P粉212971745
P粉212971745

membalas semua(1)
P粉523335026

Model siaran anda tidak ada kaitan dengan pengguna kerana saya lihat ia hanya mempunyai nama pengguna. Anda boleh membuat koleksi baharu untuk pengarang dengan meletakkan pengarang _id 保存在 author dalam medan apabila anda membuat siaran baharu.

Kini apabila anda memadamkan pengguna, anda boleh menanyakan koleksi artikel berdasarkan kunci pengarang mereka dan memadamkannya. Walau bagaimanapun, setelah dipadamkan, anda tidak akan dapat mendapatkan semula artikel tersebut.

static async deleteUserById(req, res) {
    const id = req.params.id;
    try {
    const user = await User.remove({          // O/p WriteResult({ "nRemoved" : 1 })
       // where: {  no need of where clause
       //    id: id,
       //},
      "_id": id
    });  
    // once you remove the user 
    // remove articles
    
    const articles = await Articles.remove({ 'author': 'pass_author_id' });
    // do your things
    } catch(e) {
      console.log(error);
    }
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan