Javascript Sequelize不创建set/get/add方法
我不确定我是否遗漏了什么,但是Sequelize似乎没有创建从belongAsmany(…)关联派生的方法(在本例中为setRequest、getRequest、addRequest) 我试图建立一种N:N关系(与食物和请求)。因此,一个Javascript Sequelize不创建set/get/add方法,javascript,sequelize.js,Javascript,Sequelize.js,我不确定我是否遗漏了什么,但是Sequelize似乎没有创建从belongAsmany(…)关联派生的方法(在本例中为setRequest、getRequest、addRequest) 我试图建立一种N:N关系(与食物和请求)。因此,一个请求可以有许多食物,而食物可以有许多请求 我得到的错误是: (节点:4504)未处理的PromisejectionWarning:TypeError:food.addRequests不是函数 型号 请求模型: const{Model,DataTypes}=req
请求
可以有许多食物
,而食物
可以有许多请求
我得到的错误是:
(节点:4504)未处理的PromisejectionWarning:TypeError:food.addRequests不是函数
型号
请求模型:
const{Model,DataTypes}=require('sequelize');
类请求扩展模型{
静态初始化(sequelize){
super.init({
//格式
客户端:DataTypes.STRING(70),
处理时间:DataTypes.INTEGER,
时间:DataTypes.INTEGER,
支付时间:DataTypes.INTEGER,
//有一张桌子
}, {
//连接
续集
})
}
静态助理(模型){
this.belongsTo(models.Table,{foreignKey:'fk_Table',as:'Table',targetKey:'id'});
this.belongsTo(models.Employee,{foreignKey:'fk_Employee',as:''});
this.belongtomany(models.Food,{foreignKey:'fk_request',通过:'requests_foods',as:'request'});
}
}
module.exports=请求;
食物模式:
const{Model,DataTypes}=require('sequelize');
类食物扩展模型{
静态初始化(sequelize){
super.init({
//格式
名称:DataTypes.STRING(40),
image:DataTypes.STRING,
价格:DataTypes.FLOAT,
存储:DataTypes.INTEGER,
//被许多请求使用
}, {
//连接
续集,
表名:“食品”
})
}
静态助理(模型){
//通过:用于联接数据的表
//foreignKey:哪列请求用于引用模型。请求
this.belongtomany(models.Request,{foreignKey:'fk_food',通过:'requests_foods',as:'foods');
this.belongsTo(models.Category,{foreignKey:'fk_Category',as:'Category'});
}
}
模块出口=食品;
数据透视表:
“严格使用”;
module.exports={
up:(查询接口,续集)=>{
返回queryInterface.createTable('requests\u foods'{
身份证:{
类型:Sequelize.INTEGER,
自动递增:真,
primaryKey:没错,
allowNull:错,
},
fk_请求:{
类型:Sequelize.INTEGER,
allowNull:错,
引用:{model:'requests',key:'id'},
onUpdate:'级联',
onDelete:'级联',
},
fk_食品:{
类型:Sequelize.INTEGER,
allowNull:错,
参考:{model:'foods',key:'id'},
onUpdate:'级联',
onDelete:“限制”
},
金额:{
类型:Sequelize.INTEGER,
allowNull:错,
},
创建于:{
类型:Sequelize.DATE,
allowNull:错,
},
更新地址:{
类型:Sequelize.DATE,
allowNull:错,
}
});
},
向下:(查询接口,续集)=>{
返回queryInterface.dropTable('requests_foods');
}
};
最后是控制器(抛出错误的地方)
const-Request=require('../models/Request');
const Food=require(“../models/Food”);
module.exports={
异步列表(req、res){
const dbResponse=wait Request.findAll();
返回res.json(dbResponse);
},
异步添加(req、res){
const{client,time_processing,time_cooking,time_paying,fk_table,fk_employee,foods}=req.body;
控制台日志(请求主体);
const dbResponse=wait Request.create({client,time_processing,time_cooking,time_paying,fk_table,fk_employee});
//寻找食物清单
foods.map(异步项=>{
console.log('ITEM:',ITEM);
const food=等待食物。findByPk(项目。fk_food)
控制台.日志(食物);
food.addRequests();//此处出错
})
返回res.json(dbResponse);
}
}
注:
{客户:“Wesley Almeida Braga”,
处理时间:0,
时间:0,
支付时间:0,
fk_表:1,
fk_员工:1,
食品:[{fk_食品:1}]}
执行(默认):在“请求”(“id”、“客户机”、“时间处理”、“时间烹饪”、“时间付款”、“创建时间”、“更新时间”、“fk员工”、“fk表格”)中插入值(默认值、、、、、、、、、);
项目:{fk_食品:1}
执行(默认):从'foods'中选择'id','name','image','price','storage','createdAt'处的'created','updatedAt'处的'updated','fk'u category'作为'Food',其中'Food`.'id`=1;
食物{
数据值:
{id:1,
名称:'Carne de Sol',
图片:“example_2.png”,
价格:25,,
储存:10,
创建日期:2020-01-12T03:48:34.000Z,
更新日期:2020-01-12T03:48:34.000Z,
fk_类别:1},
_以前的数据值:
{id:1,
名称:'Carne de Sol',
图片:“example_2.png”,
价格:25,,
储存:10,
创建日期:2020-01-12T03:48:34.000Z,
更新日期:2020-01-12T03:48:34.000Z,
fk_类别:1},
_更改:{},
_型号选项:
{时间戳:正确,
验证:{},
表名:false,
是的,
偏执狂:错,
拒绝空:错,
其中集合:{id:1},
schema:null,
SchemadeLimitor:“”,
defaultScope:{},
作用域:{},
索引:[],
姓名:{复数:'食品',单数:'食品'},
省略null:false,
续集:
续集{
选项:[对象],
配置:[对象],
方言:[mysqldialogue],
queryInterface:[queryInterface],
模型:[对象],
模型管理器:[模型管理器],
connectionManager:[连接管理器],