Sequelize : Comment supprimer les articles liés aux utilisateurs ?
P粉212971745
P粉212971745 2024-02-25 17:24:16
0
1
441

J'ai un modèle d'article où chaque article est lié à un utilisateur :

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;

Comment supprimer tous les articles créés par un utilisateur lorsqu'il supprime son compte ?

J'ai la fonction suivante pour supprimer un utilisateur :

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!" });
    }
}

Je suis passé de MongoDB à MySQL et je suis un peu perdu dans les relations

P粉212971745
P粉212971745

répondre à tous(1)
P粉523335026

Votre modèle de publication n'a rien à voir avec les utilisateurs car je vois qu'il n'a qu'un nom d'utilisateur. Vous pouvez créer une nouvelle collection pour les auteurs en plaçant l'auteur _id 保存在 author dans le champ lorsque vous créez un nouveau message.

Désormais, lorsque vous supprimez un utilisateur, vous pouvez interroger la collection d'articles en fonction de leur clé d'auteur et les supprimer. Cependant, une fois supprimés, vous ne pourrez plus récupérer les articles.

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);
    }
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal