2013-02-12 4 views
7

Attualmente sto colpendo un muro con Ember Data caricando alcuni dati che potrebbero esistere o meno. Se un record non esiste, l'applicazione web dovrebbe crearlo.Come implementare "trova o crea" con Ember Data

Caso di utilizzo semplice: documentazione di un inventario. Se un articolo non esiste, dovrebbe essere aggiunto un nuovo articolo. Se esiste, il dipendente può immediatamente utilizzare le informazioni.

Sospetto che il metodo find() dell'adattatore sia la fonte di questo problema. Non può gestire un errore 404 non trovato e il passaggio di un risultato vuoto non funziona neanche.

Probabilmente sto trascurando qualcosa di banale, poiché "trova o crea" è un modello abbastanza regolare. Aiutateci ...

+0

Sono bloccato anche qui. Sto cercando di farlo all'interno di un percorso, sembra che una volta findRecord fallisce mi blocco in .catch() senza alcun modo per creare un record o restituirlo. @ peter, qualche idea? – Matthew

risposta

1

vedere #296 già un bug report per questo

+0

Grazie, sembra che questo sia uno degli argomenti che richiedono più amore. – user1998398

4

Vedere this issue, o ecco la soluzione:

findOrCreate: (type, properties)-> 
    @store.find(type, properties.id).then null, (reason)=> 
    if reason.status == 404 
     record = @store.recordForId(type, properties.id) 
     record.loadedData() 
     record.setProperties(properties) 
     record.save() 
    else 
     throw reason