首页 > 解决方案 > 续集关联

问题描述

我是续集的新手,一直在探索关联。我正在使用 mysql 5.6 并续集 ^4.42.0。我正在尝试创建两个简单的表:PRJS & TASKS 并将一些数据插入这些表中。

通过以下代码片段,我试图一次性将数据插入“PRJS”以及“Tasks”表中。

但它只是将数据插入 PRJS 表中,尽管这两个表都已创建。

const http = require("http");
const express = require("express");
const Sequelize = require("sequelize");

const router = require("./routes/api-routes");
const sequelize = require("./config/db");
     const Prj = sequelize.define('prj', {
        id :{
            type:Sequelize.INTEGER,
            autoIncrement:true,
            primaryKey:true
        },
        title: Sequelize.STRING,
        description: Sequelize.TEXT
      });

      const Task = sequelize.define('task', {
        details: Sequelize.STRING,

      });

      Prj.hasMany(Task);
      Task.belongsTo(Prj);

      Prj.create(
          {
              title:"a",
              description:"asdfasfasd",
              tasks:[{
                details:"asfasdfasd"
              }],
              include:[Task]
          }
      );

以下是我在上面的代码中导入的 db.js 文件的内容:

const Sequelize = require("sequelize");


const sequelize = new Sequelize("test_db","test","123456",{
    dialect:"mysql",
    host:"localhost",
    port:3306
});

module.exports = sequelize;

任何帮助深表感谢。

谢谢,拉希里

标签: associationssequelize.js

解决方案


  1. 创建关联时使用“as”。
Prj.hasMany(Task, { as: 'Tasks' });
Task.belongsTo(Prj);
  1. 包含应如下所示:
Prj.create(
          {
              title:"a",
              description:"asdfasfasd",
              tasks:[{
                details:"asfasdfasd"
              }],
              { 
                include: [{
                  model: Task,
                  as: 'Tasks'
                }]
              }
          }
      );

试着写下结果会发生什么。


推荐阅读