/ / Come promettere la mia classe in nodejs - node.js, mongoose, bluebird

Come promisurare la mia classe in nodejs - node.js, mangusta, bluebird

Sto usando bluebird per implementare promisify nella mia libreria personalizzata. Ho follwing lib
utente, lib-1, lib-2 ecc

Alla registrazione dell'utente, dal mio router utente

// user_router.js
var user = new User();
var lib1 = new Lib1();
var lib2 = new Lib2();
// I am expecting, all method will be async by following 3 lines!
Promise.promisifyAll(user);
Promise.promisifyAll(lib1);
Promise.promisifyAll(lib2);
user.validationAsync(payload)
.then(function(result_from_validation) {
return lib1.validationAsync(payload);
})
.then(function(result_lib1_validation)) {
return lib2.validationAsync(payload)
})
.then(function(result_lib2_validation)) {
// final save
user.registerAsync(payload);
lib1.saveAsync(payload);
lib2.saveAsync(payload);
return {"response-data"}
})
.then(function(response)) {
// send response
res.json("success", "User successfully created", {});
})
.catch(function(error)) {
//all error will be handled here
//these error will be either throw or by promise rejected.
res.json("error", error.message, {error.stack});
})

Nel metodo di convalida sto lanciando errori come

//user_lib.js
// This throw will be handled by router catch. ???
throw Error("Field value is invalid");

Nel metodo save mongooes modal ha anche una convalida come l'utente esiste già quindi non è possibile creare l'utente.

function register (payload)
{
// payload data binded on user_modal here
var user_modal = getUserModal(payload);
user_modal.saveAsync()
.then(function(){})
.catch(function(error){
//How to handle error here and send this error to router
})
}

Tutto sopra è solo la mia aspettativa. Voglio inviare tutte le risposte da user_router.js. (Il mio modulo utente è già implementato. ora è necessario integrarlo con bluebird)

Ora domanda:

  • Come posso farlo da bluebird? Come attivare il metodo di risoluzione / rifiuto oggetto utente (esplicitamente) ??
  • Se il metodo di convalida genera un errore, allora esso verrà catturato dal metodo di cattura del router ???
  • Come posso inviarne errore / rifiuto alla cattura del router da mongooes (vedi registro utenti metodo)?

    Spero che otterrai i miei punti. Grazie in anticipo!!
    Puoi anche condividere qualsiasi link di esempio per implementare queste cose.

risposte:

0 per risposta № 1

Ora sto usando try catch per l'istruzione normale e utilizzo promise per la gestione degli errori asincroni !! :) Grazie mille guyz