[英]Sequelize can't create with association
我正在嘗試使用現有記錄中的關聯來創建記錄。
例如:
const surveys = await Surveys.create(
{
UserToId: args.UserToId,
UserFromId: args.UserFromId,
statusId: args.statusId,
sourceId: args.sourceId,
link: args.link,
score: args.score
},
{
include: [
{ model: Users, as: "UseToId" },
{ model: Users, as: "UserFromId" },
{ model: Statuses },
{ model: Sources }
]
}
);
console.log("survey:", surveys);
return surveys;
我收到消息:
用戶多次與調查相關聯。 要標識正確的關聯,必須使用“ as”關鍵字來指定要包括的關聯的別名。
似乎這是我在包含項中所做的,但仍然不允許我創建項。
為什么我不能僅使用其ID創建項目,如果我只想將ID和ID插入到ForeignKey列中,為什么我不知道為什么需要包含。
我打印出調查:
dataValues:
{ id: 16,
statusId: 1,
sourceId: 1,
link: 'survey.com/22kj23l',
score: 4,
updatedAt: 2019-08-20T00:28:50.511Z,
createdAt: 2019-08-20T00:28:50.511Z,
UserToId: null,
UserFromId: null },
_previousDataValues:
{ statusId: 1,
sourceId: 1,
link: 'survey.com/22kj23l',
score: 4,
id: 16,
createdAt: 2019-08-20T00:28:50.511Z,
updatedAt: 2019-08-20T00:28:50.511Z,
toId: undefined,
fromId: undefined },
我的模型是這樣的:
"use strict";
module.exports = (sequelize, DataTypes) => {
const surveys = sequelize.define(
"surveys",
{
link: DataTypes.STRING,
score: DataTypes.INTEGER
},
{}
);
surveys.associate = function(models) {
// associations can be defined here
models.surveys.belongsTo(models.statuses);
models.surveys.belongsTo(models.sources);
models.surveys.belongsTo(models.users, { as: "to" });
models.surveys.belongsTo(models.users, { as: "from" });
};
return surveys;
};
當as
值不匹配時,即“ UseToId” <>“ to”,將發生錯誤。 看來您在混淆表別名和外鍵字段。
嘗試更改為:
model.surveys.belongsTo(user, {as: 'toUser', foreignKey: 'UseToId'});
和
include: [
{ model: Users, as: "toUser" },
關於models.surveys.belongsTo(models.users, { as: "to" });
注意:應避免使用保留字作為別名的恕我直言-這很麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.