2013-06-18 76 views
5

我無法理解urlRoot如何在Backbone.js中工作。我試圖從NodeJS/MongoDB後端獲取具有特定_id的任務。如何正確設置Backbone.js urlRoot方法

我不完全清楚的是如何將id屬性傳遞給URI。我一直在做從Chrome瀏覽器開發工具如下:

var task = new App.Models.Task({ id: '51c09ae7d3b35d29d4dfdecd' }); 
task.fetch(); 

我收到以下錯誤:

GET http://localhost:3000/tasks/:_id 500 (Internal Server Error) 

如何正確設置呢?

這裏是我的骨幹代碼:

(function() { 

    window.App = { 
    Models: {}, 
    Views: {}, 
    Collections: {} 
    }; 

    App.Models.Task = Backbone.Model.extend({ 
    defaults: { 
     title: '', 
     completed: false 
    }, 

    idAttribute: "_id", 

    urlRoot: '/tasks/:_id' 
    }); 

})(); 

回答

5

看着http://backbonetutorials.com/what-is-a-model/指導我會說你不需要定義idAttribute和你urlRoot應該只是「/任務」。骨幹應該處理剩下的事情。

注意:我還沒有使用骨幹,但一直在讀它。

+1

Evan,你也應該刪除這行 - idAttribute:「_id」 –

+0

刪除'idAttribute:「_id」,'與切換urlRoot一起工作到''/ tasks /''。我有點困惑,因爲我認爲這條線是必要的,因爲Mongo使用'_id',而不是'id'。 Backbone知道如何獲取名爲'_id'的屬性呢? –

+0

我不知道你的後端的細節,但我希望在REST API中使用「id」,但是當你的服務連接到Mongo時,它在那裏使用「_id」。 –