【发布时间】:2016-11-01 18:24:51
【问题描述】:
我已经阅读了this 的问题,但它对我没有帮助,所以我问我自己的问题:
假设我有 2 个表,由 NM 通过使用 Sequelize 和 MariaDB 的表连接:
User <-- UserItem --> Item
一个用户可以拥有多个项目,一个项目可以属于多个用户。但是我需要一个自定义的 through 属性来存储 Item 的数量,我们称之为 Apples。所以,根据docs,定义如下:
var UserItem = Sequelize.define('UserItem', {
quantity: DataTypes.INTEGER
},
timestamps: false
});
models.Item.belongsToMany(models.User, {through: 'UserItem'});
models.User.belongsToMany(models.Item, {through: 'UserItem'});
然后我用 through 属性添加一个新关系,如下所示:
User.addItem(item, { quantity: 0 });
这按预期工作。但是,如果我需要更新商品的数量怎么办?我可以做到以下几点:
User.addItem(item, { quantity: 20 });
如果我的项目存在,我的数量将更新为 20,否则插入。我不想要这个。我想要这样的东西:
User.addItem(item, { quantity: quantity + 1 });
但由于无法对连接表进行查询,我无法使用之前的值获取特定的 NM 行进行更新。
我怎样才能做到这一点?提前致谢。
【问题讨论】:
标签: mysql node.js sequelize.js mariadb