【发布时间】:2020-04-21 18:32:35
【问题描述】:
我正在尝试在 2 个模型之间引用外键。但我收到了这个错误:
throw new AssociationError(`${source.name}.belongsToMany(${target.name}) 需要通过选项,传递字符串或模型`);
AssociationError [SequelizeAssociationError]: Order.belongsToMany(User) 需要通过选项,传递字符串或模型
我检查了一些类似的问题,但没有帮助。 我今天开始使用 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
【问题讨论】:
标签: mysql node.js sequelize.js