2013-06-18 14 views
5

Non riesco a capire come funziona urlRoot in Backbone.js. Sto tentando di recuperare un'attività con uno specifico _id da un backend NodeJS/MongoDB.Come configurare correttamente il metodo urlRoot Backbone.js

Quello su cui non sono esattamente chiaro è come passare l'attributo id nell'URI. Ho fatto quanto segue da strumenti di sviluppo Chrome:

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

e ricevo il seguente errore:

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

Come faccio correttamente installo questo?

Ecco il mio codice Backbone:

(function() { 

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

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

    idAttribute: "_id", 

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

})(); 

risposta

5

Guardando http://backbonetutorials.com/what-is-a-model/ per la guida direi che non è necessario per definire l'idAttribute e la tua UrlRoot dovrebbe essere solo "/ compiti". Backbone dovrebbe gestire il resto.

Nota: non ho ancora utilizzato Backbone ma ci sto leggendo.

+1

Evan, Inoltre dovresti eliminare questa riga - idAttribute: "_id" –

+0

Rimozione di 'idAttribute:" _id ",' ha funzionato con il passaggio di urlRoot a ''/ tasks /''. Sono un po 'confuso perché pensavo che quella linea fosse necessaria a causa di Mongo che usa '_id', non' id'. Come sa Backbone a recuperare l'attributo chiamato '_id' allora? –

+0

Non conosco i dettagli del tuo back-end, ma mi aspetterei che "id" sia usato nell'API REST ma poi quando il tuo servizio si connette a Mongo usa "_id" lì. –

Problemi correlati