【问题标题】:backbone model.destroy not triggering a DELETE request骨干model.destroy没有触发删除请求
【发布时间】:2012-12-26 07:11:53
【问题描述】:

这是我的模型。

library.BookModel = Backbone.Model.extend({
    urlRoot: '/api/books',
    defaults: {
        id      : null,
        imageurl: 'noimage.jpg', 
    }
});

我正在尝试通过调用 book.destroy 来发出删除请求。但它不会触发请求。应用程序初始化时。该模型由来自服务器的数据填充。模型中设置了两个 ID 属性。 id(客户端 id)和_id(mongodb id)。我在模型初始化函数中将客户端 ID 初始化为 book.attributes.id = book.attributes._id。所以一切都准备好了。但我似乎无法发起删除请求。请告诉我哪里出错了。我在这里错过了什么吗?

我的后端路由器被定义为处理删除请求。

app.delete('/api/books/:id', function(req, res){...});

【问题讨论】:

  • 尝试按照 pramod 的回答中提到的“idAttribute: '_id'”。

标签: javascript node.js backbone.js


【解决方案1】:

尝试使用idAttribute 设置id 属性,对于您的情况(mongodb)是_id。这是服务器设置的id。

library.BookModel = Backbone.Model.extend({

    urlRoot: '/api/books',

    idAttribute: '_id',

    defaults: {
        imageurl: 'noimage.jpg', 
    }

});

Backbone 在客户端自动设置的 id 是cid 而不是 id。 cid 可以使用,直到模型在服务器上同步并获得服务器 id。

【讨论】:

  • 'idAttribute',写入完整的属性名称,'idAttr' 可能不起作用。
  • 哇,谢谢!经过半小时的搜索,这是迄今为止最优雅的解决方案。
猜你喜欢
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多