-1

Backbone.save を使用してモデルを保存し、モデルのネスト データをフィルターする必要があるため、使用します。

model.save(null,{
    success: ...,
    error:...,
    data: {
        id:null,
        name:'myname',
        nestmodel: {
            id:'xx'/*Other data i don't need it,so just id column*/
        }
    }
}

patchそして、 HTTP METHODを使用したくありません。部品データを変更するのではなく、新しいモデルを追加するだけなので。

そして、私はいくつかのデータを投稿したくありませんnestmodel。なぜなら、それは大きすぎて、IDだけでいいからです。

そしてnestmodel、IDが必要です。

同期時に除外するモデル プロパティ (Backbone.js) と Backbone.js/express.js パラメーターを読みました。model.save()

その問題を解決する方法があります。

それは私のコード全体です:

 sync: function(method, model, options) {
  var data, orderSuiteItems;
  if (method === 'create') {
    options.url = this.url;
  } else {
    // MUST setting the url .options's url is undefined
    options.url = this.url + this.idUrl(this.get('id'));
  }
  // IF `create` or `update` , pick the we need properties
  if (method === 'create' || method === 'update') {
    orderSuiteItems = [];
    if (this.has('orderSuiteItems')) {
      // Because the `dishes` and `dishesUnitPrice` have a lot of prop,
      // Each of `dishes` or `dishesUnitPrice` may each have 10K data
      orderSuiteItems = _.map(this.get('orderSuiteItems'), function(osi) {
        return {
          id: osi.id,
          qty: osi.qty,
          servingQty: osi.qty,
          confirmQty: osi.confirmQty,
          deleted: osi.deleted,
          orderItem: _.pick(osi.orderItem, 'id'),
          dishes: _.pick(osi.dishes, 'id'), // HAVE a large prop 
          dishesUnitPrice: _.pick(osi.dishesUnitPrice, 'id'), // HAVE a large prop 
          orderItemStatus: osi.orderItemStatus,
          piece: osi.piece
        };
      });
    }
    data = {
      id: this.get('id'),
      order: this.get('order'),
      price: this.get('price'),
      dishes: _.pick(this.get('dishes'), 'id', 'isSuite'),
      dishesUnitPrice: _.pick(this.get('dishesUnitPrice'), 'id'),
      qty: this.get('qty'),
      servingQty: this.get('servingQty'),
      confirmQty: this.get('confirmQty'),
      sum: this.get('sum'),
      orderSuiteItems: orderSuiteItems,
      orderItemStatus: this.get('orderItemStatus')
    };
    // Setting attrs with pick data.
    options.attrs = data;
    return Backbone.sync(method, model, options);
  } else {
    return Backbone.sync(method, model, options);
  }
}
4

1 に答える 1