首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >选择带有子模型属性的父模型并销毁它- sequelize/MySQL

选择带有子模型属性的父模型并销毁它- sequelize/MySQL
EN

Stack Overflow用户
提问于 2020-04-09 12:30:04
回答 1查看 95关注 0票数 0

我有带有tokenuser_id属性的UserVerifyToken模型。我需要选择一个用户,但要使用token (从tokens表)值。

我试过了:

代码语言:javascript
代码运行次数:0
运行
复制
 await models.User.destroy({
    hierarchy: true,

   where: {
    token: token
   }
});

这是用户模型:

代码语言:javascript
代码运行次数:0
运行
复制
const VerifyToken = require('./verifyToken');

module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
    password: DataTypes.STRING,
    email: DataTypes.STRING,

}, {
    tableName: 'users',
    //syncOnAssociation: true
    hierarchy: true
});

User.associate = function (models) {
    const {VerifyToken} = models;

    User.hasOne(VerifyToken, {
        onDelete: 'CASCADE'
    });
};

return User;
};

VerifyToken模型:

代码语言:javascript
代码运行次数:0
运行
复制
const User = require('./user');

module.exports = (sequelize, DataTypes) => {
const VerifyToken = sequelize.define('VerifyToken', {

    user_id: DataTypes.INTEGER,
    token: DataTypes.STRING,

}, {
    tableName: 'verify_tokens',
    syncOnAssociation: true,
    hierarchy: true
});


  VerifyToken.associations = function (models) {
    const {User} = models;

    VerifyToken.belongsTo(User);
   };

    return VerifyToken;
};

问题是,我甚至不知道从哪里开始。我试过使用include:[{model: models.VerifyToken, where: {}}],但是如何使用子模型中调用的user_id

我想要的是用一个值(子模型中的token)选择一个用户(父模型),然后用一个查询删除它。

EN

回答 1

Stack Overflow用户

发布于 2020-04-09 13:04:20

您想要的问题语句是在一个sequelize操作中支持joindelete

我想要的是用一个值(子模型中的token)选择一个用户(父模型),然后用一个查询删除它。

在sequelize documenation中,Model.destroyoptions属性中没有include

因此,剩下的唯一选择是从VerifyToken模型中选择user_id,然后在User模型上调用destroy,其中user_id中的id是从VerifyToken获得的。

在代码中,它将如下所示

代码语言:javascript
代码运行次数:0
运行
复制
const verifyTokens = await VerifyToken.findAll({
   where: {
       token: {
           [Sequelize.Op.In] : YOUR_TOKENS_FOR_WHICH_YOU_WANT_TO_DELETE_YOUR_USER
       }
   }
}

const userIdsToDestroy = verifyTokens.map(verifyToken => verifyToken.user_id)
await User.destroy({
    where: {
        id: {
            [Sequelize.Op.in] : userIdsToDestroy
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61114004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档