我正在尝试使用现有记录中的关联来创建记录。
例如:
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;
};
答案 0 :(得分:0)
如果Call<List<MovieResponse>>
的值不匹配,即“ UseToId” <>“ to”,则会发生错误。看来您在混淆表别名和外键字段。
尝试更改为:
Call<MovieResponse>
和
ExecutorCallbackCall
关于as
:应避免使用保留字作为别名的恕我直言-这是自找麻烦。