[英]Custom json response in sequelize.js
我使用sequelize從mysql db獲取json。 所以我有兩個模型Menu
和Product
進一步關聯,如:
Menu.js
classMethods: {
associate: function(models) {
Menu.hasMany(models.Product, {foreignKey: 'menu_id'})
}
}
Product.js
classMethods: {
associate: function(models) {
Product.belongsTo(models.Menu, {foreignKey: 'menu_id'})
}
},
// IF I ADD BELOW CODE I HAVE ERROR: Possibly unhandled ReferenceError: menu is not defined
instanceMethods: {
toJSON: function () {
var values = this.get();
if (this.Menu) {
values.icon = menu.icon;
}
return values;
}
}
和
Product.findAll({
where: { /* id: */ },
include: [
{ model: Menu }
]
}).success(function(match) {
res.json(match);
});
然后我得到:
{
"id": 3,
"menu_id": 1,
"product_title": "whatever",
"price": 22,
"createdAt": "0000-00-00 00:00:00",
"updatedAt": "0000-00-00 00:00:00",
"Menu": {
"id": 1,
"menu_title": "whatever",
"icon": "someurlforicon",
"createdAt": "2014-12-29T00:00:00.000Z",
"updatedAt": "2014-12-29T00:00:00.000Z"
}
}
是否可以從菜單模型中擴展帶有圖標的產品數組? 喜歡:
{
"id": 3,
"menu_id": 1,
"product_title": "whatever",
"price": 22,
"icon": "someurlforicon",
"createdAt": "0000-00-00 00:00:00",
"updatedAt": "0000-00-00 00:00:00",
}
謝謝你的幫助!
您可以將自定義toJSON
方法添加到Product模型:
instanceMethods: {
toJSON: function () {
var values = this.get();
if (this.Menu) {
values.icon = this.Menu.icon;
}
return values;
}
}
產品和菜單是多對一的關聯。 所以Product.find()無法返回產品數組。 因為產品對應一個菜單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.