Tôi đang mở rộng ứng dụng của tôi và tôi cần phải tham gia hai mô hình trước đây tôi đã tạo ra với Sequelize, họ như sau:Sequelize hasMany Tham gia hiệp hội
Meal
sequelize.define('meal', {
mealId: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
quantity: {
type: DataTypes.DECIMAL,
allowNull: false
},
period: {
type: DataTypes.INTEGER,
allowNull: false
}
})
Thực phẩm
sequelize.define('food', {
idFood: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
nameFood: {
type: DataTypes.STRING,
allowNull: false
}
})
Tôi đã thêm mối quan hệ sau:
db.food.hasMany(db.meal, {as : 'Food', foreignKey : 'idFood'});
Dòng này cho biết thêm một cột idFood trên Meal
Nhanh chóng giải thích những gì đang xảy ra, Thực phẩm được một bảng với nhiều loại thực phẩm (duh) như bánh mì, gạo, Đậu vv Meal là một bảng xác định thực phẩm nào người dùng đã chọn với chi tiết của họ.
Do đó, hiểu biết của tôi là Meal có nhiều Thực phẩm (như tôi đã thêm trước đó) nhưng Thực phẩm không đòi hỏi bất kỳ mối quan hệ với Meal, vì nó chỉ chứa dữ liệu và không được thay đổi sau khi Tôi lần đầu tiên cư trú nó. Nhưng khi tôi đã cố gắng để tham gia cùng họ với:
db.meal.findAll({ include : [db.food] }).then(function (meals) {
console.log(JSON.stringify(meals));
});
Tôi đã nhận lỗi sau:
Unhandled rejection Error: food is not associated to meal!
bất cứ ai có thể giải thích những gì tôi nên làm gì? Tôi nghĩ rằng nó có liên quan đến các mối quan hệ, nhưng tôi không thể tìm thấy trên tài liệu bất kỳ lời giải thích tốt nào về những gì tôi nên làm.
Cảm ơn bạn!
Chỉnh sửa: Đọc tài liệu (again), ví dụ có ý nghĩa, nhưng tôi không nghĩ rằng ví dụ này có thể áp dụng cho trường hợp của tôi, vì trên ví dụ của họ, Người dùng có Tác vụ và Tác vụ thuộc về Người dùng. Nhưng trong trường hợp của tôi, Thức ăn không thuộc về Bữa ăn, bởi vì nhiều Bữa ăn có thể có cùng Món ăn với số lượng khác nhau (hoặc cho những người dùng khác nhau).
Excelent! Điều này đã cho tôi kết quả tôi muốn, chỉ là một câu hỏi cuối cùng. Tôi đang in JSON.stringify (bữa ăn) và nó hiển thị mọi phần của dữ liệu, nhưng nếu tôi muốn tự mình truy cập một số giá trị tôi có thể làm được không? – leofontes
Giống như truy cập vào mỗi thực phẩm? –
Đừng bận tâm, tôi đã tìm ra, cảm ơn bạn rất nhiều! – leofontes