我扩大我的申请,我需要加入我之前曾与Sequelize创建了两个型号,它们分别为:Sequelize的hasMany加入协会
膳食
sequelize.define('meal', {
mealId: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
quantity: {
type: DataTypes.DECIMAL,
allowNull: false
},
period: {
type: DataTypes.INTEGER,
allowNull: false
}
})
食品
sequelize.define('food', {
idFood: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
nameFood: {
type: DataTypes.STRING,
allowNull: false
}
})
我增加了以下关系:
db.food.hasMany(db.meal, {as : 'Food', foreignKey : 'idFood'});
此行膳食增加了一个idFood列
快速解释是怎么回事,食品与许多食物(废话),如面包,大米,豆类等表膳食是一张表格,用于标识用户选择了哪些食物和他们的细节。
因此,我的理解是,膳食有许多食品(我加之前),但食品并不需要与膳食任何关系,因为它只是保存数据后没有改变我首先填充它。但是,当我试图加入他们的行列:
db.meal.findAll({ include : [db.food] }).then(function (meals) {
console.log(JSON.stringify(meals));
});
我得到了以下错误:
Unhandled rejection Error: food is not associated to meal!
谁能解释我应该怎么办呢?我认为这与这些关系有关,但我无法找到关于我应该做什么的一个好的解释。
谢谢!
编辑:阅读文档(again),这个例子是有道理的,但我不认为这个例子适用于我的情况,因为在他们的例子中,用户有一个任务,任务属于用户。但在我的情况下,食物不属于膳食,因为许多膳食可以有不同数量(或不同用户)的相同食物。
优秀!这给了我想要的结果,只是最后一个问题。 我在打印JSON.stringify(餐食),它显示了数据的每个部分,但是如果我想自己访问其中的一些值,怎么办?我能做到吗? – leofontes
像访问每个食物? –
没关系,我明白了,非常感谢你! – leofontes