如何使用Sequelize(Node.js)上的联接进行批量更新
我有2个模型(亲子):用Sequelize定义的项目和cart_items。 关系:
db.items.hasMany(db.cart_items, { foreignKey: 'itemId' }); db.cart_items.belongsTo(db.items, { foreignKey: 'itemId' });
项目有价格fiels,cart_items有itemPrice字段,我需要更新item.price字段。
我需要使用父模型的数据批量更新子模型。 Sequelize有可能吗? 像这样的东西:
db.cart_items.update( // values { itemPrice: db.items.price }, // Related parent item model = 0 // options { where: this.getCartItemsQueryObj(userId) } // This is ok );
我可以用原始的mysql查询来做到这一点:
return db.sequelize.query(` UPDATE cart_items ci JOIN items i ON ci.itemId = i.id SET ci.itemPrice = i.price WHERE ci.userId=:userId AND ci.orderId IS NULL`, { replacements: { userId: userId }, type: db.sequelize.QueryTypes.UPDATE } );