【问题标题】:Sequelize How to save model with hasMany association?Sequelize 如何使用 hasMany 关联保存模型?
【发布时间】:2019-06-13 18:01:00
【问题描述】:

我有两个模型 Job 和 Contact。一个 Job 可以有多个 Contact。这是模态。

工作

module.exports = (sequelize, DataTypes) => {
  const Job = sequelize.define("Job", {
    job_name: DataTypes.STRING,
    due_date: DataTypes.DATE,
    assigned_hours: DataTypes.INTEGER,
    descriptions: DataTypes.STRING
  });
  Job.associate = function(models) {
    // associations can be defined here
    Job.hasMany(models.Contact, { foreignKey: "job_id" });
  };
  return Job;
};

联系方式

module.exports = (sequelize, DataTypes) => {
  const Contact = sequelize.define(
    "Contact",
    {
      organization_name: DataTypes.STRING,
      contact_person: DataTypes.STRING,
      email: DataTypes.STRING,
      phone: DataTypes.STRING,
      // Group can only be either client,contact or contractor
      group: DataTypes.STRING,
      sub_group: DataTypes.STRING,
      instruction: DataTypes.STRING
    },
    {}
  );

  return Contact;
};

在我的应用程序中,联系人是单独创建的,用户只需在创建工作时选择联系人。那么,我应该怎么做才能将已经创建的联系人与工作相关联?我已阅读文档,但无法获得清晰的图片。我应该做类似newJob.setContacts 的事情吗?我需要传递整个联系人对象还是只传递联系人的 ID (newJob.setContacts(['1','2'])?

【问题讨论】:

    标签: sequelize.js


    【解决方案1】:

    首先,您的联系人模型实际上甚至没有您用于 hasMany...job_id... 的外键列...这实际上是您要使用的多对多关系吗?一个工作可以有多个联系人,一个联系人属于多个工作吗???

    【讨论】:

    • 你应该在你的数据库中为两个表和一个连接表都有一个 Id 列......连接表应该由两个记录的 ID 组成。然后你必须对该连接表进行建模,并且在 Job 和 Contact 模型的 belongsToMany 关系中包含模型名称
    • 试一试,如果您需要帮助,请在此处发布您正在尝试的代码,我会提供帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    相关资源
    最近更新 更多