2013-06-18 9 views
5

urlRootがBackbone.jsでどのように機能するのか理解できません。 NodeJS/MongoDBバックエンドから特定の_idのタスクをフェッチしようとしています。Backbone.js urlRootメソッドを正しく設定する方法

私が正確にはわからないのは、id属性をURIに渡す方法です。

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

そして私は、次のエラーが表示さ:私はクロームのdevのツールから、次のことを行ってきた私はこれを適切に設定するにはどうすればよい

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

を?私はあなただけ「/タスクを」あるべきidAttributeとあなたのurlRootを定義する必要はありませんと言うでしょう

(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/を見る:

は、ここに私のバックボーンコードです。バックボーンは残りの部分を処理する必要があります。

注:私はまだバックボーンを使用していませんが、それについては読んでいます。

+1

Evanまた、この行を削除する必要があります - idAttribute: "_id" –

+0

'idAttribute:" _id "を削除すると、urlRootを'/tasks/'に切り替えることができます。私は、 'id 'ではなく' _id'を使ってMongoのために行が必要だと思ったので少し混乱しています。 Backboneは '_id'という属性を取得する方法をどのように知っていますか? –

+0

あなたのバックエンドの詳細はわかりませんが、 "id"はREST APIで使用されていますが、あなたのサービスがMongoに接続するときにはそこに "_id"が使用されると思います。 –