2013-06-18 29 views
5

Tôi gặp sự cố khi hiểu cách hoạt động của urlRoot trong Backbone.js. Tôi đang cố gắng lấy một nhiệm vụ với một cụ thể _id từ một phụ trợ NodeJS/MongoDB.Cách thiết lập đúng phương thức urlRoot của Backbone.js

Điều tôi chưa biết chính xác là cách chuyển thuộc tính id vào URI. Tôi đã làm như sau từ các công cụ dev Chrome:

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

Và tôi nhận được lỗi sau:

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

Làm thế nào để đúng cách thiết lập này lên?

Đây là mã Backbone của tôi:

(function() { 

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

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

    idAttribute: "_id", 

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

})(); 

Trả lời

5

Nhìn vào http://backbonetutorials.com/what-is-a-model/ để được hướng dẫn tôi sẽ nói rằng bạn không cần phải xác định idAttribute và urlRoot của bạn nên chỉ là "/ nhiệm vụ". Xương sống nên xử lý phần còn lại.

Lưu ý: Tôi chưa sử dụng Backbone nhưng đã đọc trên đó.

+1

Evan, Ngoài ra, bạn nên xóa dòng này - idAttribute: "_id" –

+0

Xóa 'idAttribute:" _id ",' làm việc cùng với việc chuyển urlRoot thành ''/ tasks /''. Tôi hơi bối rối vì tôi nghĩ rằng dòng đó là cần thiết do Mongo sử dụng '_id', không phải' id'. Backbone biết tìm nạp thuộc tính được gọi là '_id' như thế nào? –

+0

Tôi không biết chi tiết về phụ trợ của bạn nhưng tôi hy vọng rằng "id" được sử dụng trong API REST nhưng sau đó khi dịch vụ của bạn kết nối với Mongo, nó sử dụng "_id" ở đó. –

Các vấn đề liên quan