我正在尝试使用预定义模型实现具有其他属性的Sequelize连接表。但是,在我关联它并同步它的那一刻,它不会将其他属性添加到Sequelize doc中指定的关联表中。
在mysql数据库中,创建了两个表而不是一个:PartsPurchaseOrders和PurchaseOrderParts。我不知道如何让它发挥作用。
请帮助我,谢谢!
var registry = require('../models');
module.exports.model = function(sequelize, Sequelize) {
return sequelize.define('PurchaseOrderParts', {
recieved: {
type: Sequelize.BOOLEAN,
defaultValue: false
},
recievedAt: {
type: Sequelize.DATE,
defaultValue: null
},
quantity: {
type: Sequelize.INTEGER,
defaultValue: 0,
validate: {min: 0}
}
}, {
classMethods: {
// this is where you add class methods
},
instanceMethods: {
// this is where you add instance methods
}
});
};
module.exports.associations = function() {
var PurchaseOrder = registry["PurchaseOrder"];
var Part = registry["Part"];
var PurchaseOrderParts = registry["PurchaseOrderParts"];
Part.hasMany(PurchaseOrder, {through: PurchaseOrderParts});
PurchaseOrder.hasMany(Part, {through: PurchaseOrderParts});
};
答案 0 :(得分:0)
通过最近的更改,合并了几种指定连接模型属性的不同方法。之前它被称为joinTableModel
你可以尝试使用github的npm / master分支的最新版本吗?
答案 1 :(得分:0)
我已经玩过sequelize并遇到了同样的问题。
我有两张桌子:
他们有多对多的关系,我想在x-table中添加数量。解决方案是,定义我自己的ListItem模型并执行以下关联:
Item.hasMany(List, { joinTableModel: ListItem, useJunctionTable: false });
List.hasMany(Item, { joinTableModel: ListItem, useJunctionTable: false });
使用sqlite进行测试,并按预期创建表。添加列表和项目也有效,但在将项目添加到列表时不知道如何添加数量值,反之亦然。
答案 2 :(得分:0)
而不是hasMany
,请使用BelongsToMany
。
Part.BelongsToMany(PurchaseOrder, {through: PurchaseOrderParts});
PurchaseOrder.BelongsToMany(Part, {through: PurchaseOrderParts});