簡體   English   中英

Sequelize無法創建關聯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM