Sequelize:在两个模型之间引用外键



我试图在两个模型之间引用外键。但我得到了这个错误:

throw new AssociationError(`${source.name}.belongsToMany(${target.name}(需要through选项,传递字符串或模型`(;

AssociationError[SquelizeAssociationError]:Order.belongsToMany(用户(要求通过选项,传递字符串或模型

我检查了一些类似的问题,但没有帮助。我今天开始与Sequelize合作,所以请举一个例子来回答。

db.js

const fs = require("fs");
const path = require("path");
const Sequelize = require("sequelize");
const basename = path.basename(module.filename);
const db = {};
const sequelize = new Sequelize("name", "user", "password", {
host: "localhost",
dialect: "mysql",
logging: false,
});
fs.readdirSync(__dirname).filter(file =>
(file.indexOf(".") !== 0) &&
(file !== basename) &&
(file.slice(-3) === ".js"))
.forEach(file => {
const model = sequelize.import(path.join(__dirname, file));
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;

user.js

const Sequelize = require("sequelize");
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define("User",
{
id: {
type: Sequelize.BIGINT,
autoIncrement: true,
allowNull: false,
primaryKey: true,
},
email: Sequelize.STRING(60),
password: Sequelize.STRING(60),
fullName: {
type: Sequelize.STRING(60),
allowNull: true,
},
},
);
User.associate = function (models) {
models.User.belongsToMany(models.Order);
};
return User;
};

order.js

const Sequelize = require("sequelize");
module.exports = (sequelize, DataTypes) => {
const Order = sequelize.define("Order",
{
id: {
type: Sequelize.BIGINT,
autoIncrement: true,
allowNull: false,
primaryKey: true,
},
title: Sequelize.STRING(60),
orderNumber: Sequelize.STRING(60),
status: Sequelize.STRING(60),
amount: Sequelize.STRING(60),
trackingCode: Sequelize.STRING(60),
},
);
Order.associate = function(models) {
models.Order.belongsToMany(models.User);
};
return Order;
};

当我使用小写字母定义名称时,如下所示:

const User = sequelize.define("user",
{
...
}
);
const User = sequelize.define("order",
{
...
}
);

我得到这个错误:

TypeError:无法读取未定义的属性"belongsToMany">

序列化:5.21.6

我在这里回答了类似的问题。请看一看。还要注意评论和讨论结束时的链接。如果你在阅读后有任何问题,请随时在评论中提问。

最新更新