簡體   English   中英

sequelize.js中的自定義json響應

[英]Custom json response in sequelize.js

我使用sequelize從mysql db獲取json。 所以我有兩個模型MenuProduct進一步關聯,如:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM