如何通过节点js中的sequelize更新关联记录?

Posted

技术标签:

【中文标题】如何通过节点js中的sequelize更新关联记录?【英文标题】:how to update records in association though sequelize in node js? 【发布时间】:2017-09-12 13:54:01 【问题描述】:

我们正在尝试通过 sequelize 更新关联记录,但它仅更新触发它的模型的记录或直接模型没有受查询影响的关联模型。

执行此操作的任何途径

return db.product.findById( 75759,
                include: [
                    
                        model: db.productDescription
                    
                ])
            .then(product => 
                var rahulpro = ;
                Object.assign(rahulpro,product);
                // console.log(rahulpro.product_description.description);
                rahulpro.name = "44444";
                rahulpro.product_description.dataValues.description = "rahul";
                product.updateAttributes(rahulpro);
              );

您预计会发生什么?

我们要更新描述模型的数据

实际发生了什么?

没有改变描述数据库

数据库版本: mysql 5.7 续集版本: 4.8.3

【问题讨论】:

【参考方案1】:

我在使用 Sequelize 时遇到了非常相似的问题。经过数小时的研究,我发现没有很好的方法来处理通过表附加的数据。

对于您要执行的操作,您必须执行 2 次查询,从您的产品表中找到 product 实例,然后查询 product_description 表中的 description.product_id === product.id

然后将更改写入描述实例,然后写入产品实例。

这是我项目中 ORM 的一个缺点,对于更复杂的查询,我们开始使用 raw sequel,因为它使我们能够做这样的事情。

【讨论】:

以上是关于如何通过节点js中的sequelize更新关联记录?的主要内容,如果未能解决你的问题,请参考以下文章

使用 sequelize 和 nodejs 更新多条记录?

如何使用 sequelize.js 从关联模型中加载属性

Node.js / Sequelize.js / Express.js - 如何插入多对多关联? (同步/异步?)

如何在 sequelize.js 中有条件地加载关联?

Sequelize js如何获取关联模型的平均值(聚合)

如何使用 sequelize 建立模型属于多关联