在 sequelize.js 中获取与 belongsToMany 的关联
Posted
技术标签:
【中文标题】在 sequelize.js 中获取与 belongsToMany 的关联【英文标题】:get associations with belongsToMany in sequelize.js 【发布时间】:2017-03-02 07:16:36 【问题描述】:我通过 UserDevice 连接表在 User 和 Device 模型之间建立了多对多关系:
device.belongsToMany(user,
through:
model: userDevice
,
foreignKey: "deviceId",
as: "customers"
);
user.belongsToMany(device,
through:
model: userDevice
,
foreignKey: "customerId",
as: "devices"
);
setCustomers: Sequelize.BelongsToManySetAssociationsMixin<UserInstance, string, UserDeviceAttribute>;
getCustomers: Sequelize.BelongsToManyGetAssociationsMixin<UserInstance>;
我可以找到设备并正确填充客户:
this.db.models.Device.findAll(
include: [
model: User,
as: "customers"
]
我不知道如何在其他情况下填充客户,即当我手动设置客户时。现在我正在尝试类似的东西:
return device.setCustomers(customers)
.then(() =>
return device.getCustomers();
)
.then((users) =>
device.setAttributes("customers", users);
return device;
);
但它不起作用,setAttributes 没有设置客户字段。
【问题讨论】:
【参考方案1】:答案就在问题中。我今天遇到同样问题时发现了这个错误。 https://github.com/sequelize/sequelize/blob/master/lib/model.js#L3483
setAttributes 似乎是 sequelize 的保留方法。
【讨论】:
以上是关于在 sequelize.js 中获取与 belongsToMany 的关联的主要内容,如果未能解决你的问题,请参考以下文章