node.js - 关系表不存在
问题描述
我在 sequelize (v6.3.5) 中的 n:m 关系有问题,通常使用此代码我应该自动创建第三个表“Product_File”,但是当我调用 product.addFile(file) 时出现错误“ SequelizeDatabaseError:表 'Product_File' 不存在”
产品 :
"use strict";
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class Product extends Model {
static associate(models) {
this.belongsToMany(models.File, {
through: "Product_File",
});
}
}
Product.init(
{
name: DataTypes.STRING,
description: DataTypes.TEXT,
category_id: DataTypes.INTEGER,
references: DataTypes.STRING,
},
{
sequelize,
modelName: "Product",
}
);
Product.sync().catch((err) => console.error(err));
return Product;
};
文件 :
"use strict";
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class File extends Model {
static associate(models) {
this.belongsToMany(models.Product, {
through: "Product_File",
});
}
}
File.init(
{
name: DataTypes.STRING,
type: DataTypes.STRING,
url: DataTypes.STRING,
},
{
sequelize,
modelName: "File",
}
);
File.sync().catch((err) => console.error(err));
return File;
};
解决方案
Product_File.js
"use strict";
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class Product_File extends Model {
}
Product_File.init({
productId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'Products',
key: 'id',
},
},
fileId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'Files',
key: 'id',
}
},
}, {
sequelize,
modelName: "Product_File",
});
return Product_File;
};
产品.js
...
this.belongsToMany(models.File, {
foreignKey: 'productId',
otherKey: 'fileId',
through: models.Product_File,
as: 'file'
})
...
测试.js
'use strick';
const Sequelize = require("sequelize");
const Op = Sequelize.Op;
const db = require("../models");
describe('db', () => {
it('Check Product: m:n relationship', async () => {
let A = await db.Product.findAll({
include: ['file'],
});
var aList = JSON.parse(JSON.stringify(A))
console.log(aList)
return
})
})
输出
[
{
id: 1,
name: 'Product 1',
description: null,
category_id: null,
references: null,
createdAt: null,
updatedAt: null,
file: [ [Object] ]
}
]
推荐阅读
- pandas - Pandas GroupBy drop_duplicates on specific group
- visual-studio - 如何将 CPLEX/Concert Tech 与 VS2019 和 Visual C++ 2015 链接?
- c++ - 如何抑制为 protobuf 消息字段发出显式访问器?
- java - Java:如何将取自用户的字符串与字符串数组进行比较?
- mongodb - 除了在 MongoDB 中使用角色的特定集合之外,如何对 DB 中的所有集合执行特定操作?
- tsql - 消除集合名称不同的表记录的冗余集合
- html - 你如何找到第二个嗨?
- python - 如何找到一定范围内的所有素数并打印出来?
- javascript - Firebase Cloud Firestore 规则/权限问题
- c# - 使用 LINQ 对 List 中的偶数进行排序