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
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.