Maison  >  Questions et réponses  >  le corps du texte

Sequelize : Comment supprimer les articles liés aux utilisateurs ?

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粉212971745P粉212971745237 Il y a quelques jours385

répondre à tous(1)je répondrai

  • P粉523335026

    P粉5233350262024-02-26 16:27:45

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

    répondre
    0
  • Annulerrépondre