_id
属性を削除する必要があります。
MongoLab REST APIでは、IDはデータペイロード自体の一部ではありませんが、すべてのバックエンドに当てはまるわけではありません。Backboneにとって、IDがペイロードに存在する必要があると想定する方が、存在しないと想定するよりもおそらく理にかなっています。
そうは言っても、BackboneにペイロードからIDを自動的にクリーンアップさせる本当に良い方法はありません。モンキーパッチを適用したり、コードを書き直したりしない最善の策は、おそらくオーバーライドすることです。これは次のModel#toJSON
ようなものです。
Backbone.Model.prototype.toJSON = function (options) {
var attrs = _.clone(this.attributes);
// In this case you'd have to pass `includeId: true` to `toJSON` when you
// actually *want* the _id in the output.
return options && options.includeId ? attrs : _.omit(attrs, '_id');
};
また、次のようなモンキーパッチ同期を行うこともできます。
var sync = Backbone.sync;
Backbone.sync = function (method, model, options) {
options || (options = {});
// if options.attrs is present, Backbone will use it over dumping toJSON
if (!options.attrs) options.attrs = _.omit(model.attributes, '_id');
return sync.call(Backbone, method, model, options);
};