Maison > Questions et réponses > le corps du texte
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粉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); } }