如何在Sequelize(Node.js)上使用join进行批量更新

时间:2017-11-04 11:40:00

标签: node.js sequelize.js

我有2个模型(父子):使用Sequelize定义的items和cart_items。 关系:

db.items.hasMany(db.cart_items, { foreignKey: 'itemId' });
db.cart_items.belongsTo(db.items, { foreignKey: 'itemId' });

项目有价格,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 }
      );

0 个答案:

没有答案