Mi sono battuto con la testa da un muro su questo per gli ultimi 3 giorni.Concatenare chiamate di linea di galleggiamento con Promises
Sto usando sailsjs & l'ORM della linea di galleggiamento che viene fornito in bundle. Voglio eseguire chiamate DB una dopo l'altra. So che posso farlo annidando all'interno di "allora" chiamate ma sembra solo sbagliato.
ho superato la documentazione Q e tutorial diverse volte, ma io ancora non capisco come collegare e fuoco "poi" le chiamate dalle promesse esistenti in sequenza :(
Voglio:
- creare un utente
- creare un'azione
- link che l'utente & azione
- aggiornamento l'utente
- aggiornamento l'azione
mio codice è simile
var mail = '[email protected]';
Users.create({email:mail, name:''}).then(console.log).fail(console.log);
Actions.create({actionID:123})
.then(function(error, action){
Users.findOneByEmail(mail).then(function(person){
person.actions.add(action.id);
person.save(console.log);
}).fail(console.log)
});
Users.update({email:mail},{name:'Brian'}).exec(console.log);
Actions.update({actionID:123},{now:'running'}).exec(console.log);
Come si può vedere dal codice ho usato un mix di exec & allora: P
Penso che il modo è quello di collegare Users.create (...). poi -> Action.create (...). poi -> Users.findOneByEmail (...). poi -> * e gli aggiornamenti.
enorme grazie da qualsiasi aiuto
Il tuo 'fail' non funzionerà e preferisce' catch'. A parte questo buon lavoro! –
Grazie @BenjaminGruenbaum Non sapevo se avevo bisogno di un finale done() o then() eg.}). Then(). Fail ('. Avrebbe funzionato? OPPURE scambiando il fail (...) per una presa (...) è ciò che intendi? – codemeasandwich
Anche su http://documentup.com/kriskowal/q/#tutorial il primo esempio ha 'catch (...). done();' Perché hai bisogno del finale ** fatto **? – codemeasandwich