BookshelfJS:是否可以从`withPivot`

时间:2015-06-03 18:35:46

标签: javascript json rest bookshelf.js

我正在使用Bookshelf创建一个相当简单的RESTful API,并希望在使用underscore_database_columns时返回一致的camelCase格式。

我正在使用文档中的formatparse方法成功执行此操作,但withPivot数据除外。

所有代码都是从我的项目中简化的,所以请原谅任何语法错误等,它们可能不存在于我的真实代码中

我有两个模型,RecipeIngredient

var Recipe = BaseModel.extend({
  tableName: 'recipe',

  defaults: { name: null },

  ingredients: function () {
    return this
      .belongsToMany('Ingredient')
      .withPivot(['measurement', 'sort_order']);
  }
}));

var Ingredient = BaseModel.extend({
  tableName: 'ingredients',

  defaults: { name: null },

  recipes: function () {
    return this
      .belongsToMany('Recipe');
  }
}));

我正在查询以下内容:

Model
  .forge({
    id: 1
  })
  .fetch({
    withRelated: ['ingredients']
  })
  .then(function (model) {
    return res.json(model.toJSON());
  })
  .catch(function (err) {
    return done(err);
  });

返回:

{
  "id": 1,
  "name": "Yummy Thing",
  "ingredients": [
    {
      "id": 1,
      "name": "Food Stuff",
      "_pivot_ingredient_id": 1,
      "_pivot_recipe_id": 1,
      "_pivot_measurement": "Loads",
      "_pivot_sort_order": 1
    }
  ]
}

正如您所看到的,_pivot数据与@ {1}}一样是snake_case,因为它指向表列名而不是属性。

有没有办法像camelCase一样轻松引用和返回数据透视数据?

我已经覆盖了.withPivot(['measurement', 'sort_order'])哪个工作正常但感觉不对,因为基本模型默认使用camelCase。

toJSON

我愿意使用toJSON: function () { var data = BaseModel.prototype.toJSON.apply(this, arguments); data.ingredients && (data.ingredients = data.ingredients.map(this.parse)); return data; } 模型,但我couldn't work了解如何使用fetch返回through表数据。 (我没有设置上面的JSON格式,只要所有数据都以某种形式存在。)

0 个答案:

没有答案