Rumah  >  Soal Jawab  >  teks badan

Sequelize: Bagaimana untuk memadamkan artikel berkaitan pengguna?

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粉212971745P粉212971745237 hari yang lalu386

membalas semua(1)saya akan balas

  • P粉523335026

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

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

    balas
    0
  • Batalbalas