【问题标题】:Backbone model.remove not sending DELETE骨干model.remove不发送DELETE
【发布时间】:2014-12-07 18:44:03
【问题描述】:

我有一组书签(在我的代码中简称为书),当我调用@books.remove(book) 时,永远不会发送删除请求。我可以看到我的收藏更新 - 模型已消失,但未发送请求。 POST 和 GET 工作正常。

我正在使用 Node、MongoDB 和 Mongoose。

我感觉这与我正在使用的 id 有关 - 这肯定让我有点困惑。

我有 mongoose id:“_id”,然后是一个引用烂番茄 API 的电影 ID 的 ID:“rottenID”


这是我的 JSON GET 响应的示例:
[{"_id":"5484961502c054fb59dea18a","rottenId":771364788,"__v":0}]


这是我的模型:
class Bookmark extends Backbone.Model
    idAttribute: "_id"
    url: "/api/movies/bookmarks


这是我的收藏:
class BookmarksCollection extends Movies
     model: Bookmark


在我看来删除一本书:
book = @books.where({rottenId: id})
@books.remove(book)

以下是控制台中的内容:


我在以下帖子中读到过其他人遇到此问题,但我似乎无法让他们的解决方案对我有用:

Backbone.js DELETE request not firing

RESTful Express Mongoose & Backbone - Backbone model.remove() not working

backbone model.destroy not triggering a DELETE request

【问题讨论】:

    标签: mongodb backbone.js mongoose


    【解决方案1】:
    book = @books.findWhere({rottenId: id})
    @books.remove(book)
    

    正如它所说的那样,它从@books 中删除了book。但是,从集合中删除模型与从服务器中删除模型无关。如果你想删除book实例,你需要这样做

    book = @books.findWhere({rottenId: id})
    book.destroy();
    

    这也有自动从集合中删除模型的副作用。

    【讨论】:

    • 感谢 loganfsmyth - 我试过这个,但得到“未捕获的类型错误:未定义不是函数” - 知道这里出了什么问题吗?我可以注销 book var,它显示一个对象存在?
    • 我意识到我收到了未定义的错误,因为我的 @books.where({rottenId: id}) 给了我一个包含模型的对象......而不是模型本身,所以当我这样做的时候“book = (@books.where({rottenId: id}))[0]” 我能够得到模型本身。我猜我是否需要这样做,尽管我也做错了其他事情?
    • 哦,对了,你需要 .findWhere 来获取单个实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多