backbone model.destroy不会触发DELETE请求

jay*_*ark 4 javascript node.js backbone.js

这是我的模特.

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

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

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

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

Pra*_*mod 16

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

library.BookModel = Backbone.Model.extend({

    urlRoot: '/api/books',

    idAttribute: '_id',

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

});
Run Code Online (Sandbox Code Playgroud)

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