【发布时间】:2022-01-23 01:56:53
【问题描述】:
我正在扩展我的应用程序,我需要加入我之前使用 Sequelize 创建的两个模型,它们如下:
用餐
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'});
这一行在 Meal 上添加了一个 idFood 列
快速解释发生了什么,Food 是一张包含许多食物(duh)的表格,例如面包、大米、豆类等。Meal 是一张表格,用于识别哪些食物用户选择的食物及其详细信息。
因此,我的理解是 Meal 有很多 Food(正如我之前添加的),但 Food 不需要与 Food 有任何关系strong>Meal,因为它只保存数据并且在我第一次填充它之后没有改变。但是当我尝试加入他们时:
db.meal.findAll({ include : [db.food] }).then(function (meals) {
console.log(JSON.stringify(meals));
});
我收到以下错误:
Unhandled rejection Error: food is not associated to meal!
谁能解释我应该怎么做?我认为这与关系有关,但我在文档中找不到任何关于我应该做什么的好的解释。
谢谢!
编辑:阅读文档 (again),该示例很有意义,但我认为该示例不适用于我的情况,因为在他们的示例中,用户有一个任务,而任务属于用户。但就我而言,食物不属于餐食,因为许多餐食可以有不同数量的相同食物(或针对不同的用户)。
【问题讨论】:
标签: node.js sqlite join sequelize.js relationships