【问题标题】:node.JS / sequelize associate db tablesnode.JS / sequelize 关联数据库表
【发布时间】:2021-02-18 08:44:23
【问题描述】:

我正在尝试关联两个数据库表,但我不知道在我的配置中添加代码的确切位置:

config.js

const Sequelize = require("sequelize");

const sequelize  = new Sequelize("training", "postgres", "test", {
    host: "localhost",
    dialect: "postgres",
    dialectOptions: {
      ssl: {
        require: true,
        rejectUnauthorized: false // <<<<<<< YOU NEED THIS
      }
    },
    pool: {
      max: 5,
      min: 0,
      acquire: 30000,
      idle: 10000,
    },
  })

  const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;


// db.sequelize.gallery = require("../models/gallery")(DataTypes);
// db.tags = require("../models/tags.js")(sequelize, Sequelize);

// gallery.hasMany(db.tags, { as: "item" });
// db.tags.belongsTo(db.gallery, {
//   foreignKey: "item",
//   as: "item",
// });
  
module.exports = { db, JWT_SECRET: "secretString",}

如果我在此处添加注释代码,则会收到 require is not a function 的错误。

这是我的模型的样子: 画廊.js

const { db } = require("../config/configProvider")();
module.exports = function(DataTypes) {
  const Gallery = db.sequelize.define(
    "items",
    {

      // },
      date: {
        type: DataTypes.DATE(),
        // required: true,
      },
      url: {
        type: DataTypes.STRING,
        // required: true,
      },
      description: {
        type: DataTypes.STRING,
      },
      location: {
        type: DataTypes.STRING,
      },
      rating: {
        type:DataTypes.INTEGER,
      }
    },
    { timestamps: false }
  );


  return Gallery;
};

index.js

const sequelize = require("sequelize");
const DataTypes = sequelize.DataTypes;
const Types = require("./models/types")(sequelize, DataTypes);
const Tags = require("./models/tags")(sequelize, DataTypes);

config.db.sequelize
  .authenticate()
  .then(() => {
    console.log("Connection has been established successfully.");
  })
  .catch((err) => {
    console.error("Unable to connect to the database:", err);
  });

如果我在模型中创建 index.js(我可以在其中添加 db 关联,我将如何在主文件 index.js 中调用它?

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    gallery.js

    Gallery.associate = function(models) {
        gallery.hasMany(db.tags, { as: "item" });
    };
    

    tag.js

    Tag.associate = function (models) {
        tags.belongsTo(db.gallery, {
            foreignKey: "item",
            as: "item",
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多