Sequelize无法创建关联

时间:2019-08-20 00:13:39

标签: javascript postgresql sequelize.js

我正在尝试使用现有记录中的关联来创建记录。

例如:

        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;
};

1 个答案:

答案 0 :(得分:0)

如果Call<List<MovieResponse>>的值不匹配,即“ UseToId” <>“ to”,则会发生错误。看来您在混淆表别名和外键字段。

尝试更改为:

Call<MovieResponse>

ExecutorCallbackCall

关于as:应避免使用保留字作为别名的恕我直言-这是自找麻烦。