/ / Cómo promisificar mi clase en nodejs - node.js, mongoose, bluebird

Cómo promisificar mi clase en nodejs - node.js, mongoose, bluebird

Estoy usando bluebird para implementar promisify en mi lib personalizada. Tengo lib siguiente
usuario, lib-1, lib-2, etc.

En el registro de usuario, desde mi enrutador de usuario

// 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});
})

En el método de validación arrojo errores como

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

En el método de guardar, las mongooes modal también tienen cierta validación, como que el usuario ya existe, por lo que no se puede crear un usuario.

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
})
}

Todo lo anterior es solo mi expectativa. Quiero enviar toda la respuesta de user_router.js. (Mi módulo de usuario ya está implementado. ahora necesito integrarlo por bluebird)

Ahora pregunta:

  • ¿Cómo puedo hacerlo con bluebird? Cómo activar el método de resolución / rechazo objeto de usuario (explícitamente) ??
  • Si el método de validación arroja un error, entonces será capturado por el método de captura del enrutador ???
  • ¿Cómo puedo enviar error / rechazo a la captura del enrutador de mongooes (ver registro de usuario método)?

    Espero que consigas mis puntos. ¡¡Gracias por adelantado!!
    También puede compartir cualquier enlace de ejemplo para implementar estas cosas.

Respuestas

0 para la respuesta № 1

¡Ahora estoy usando try catch para una declaración normal y estoy usando la promesa para el manejo de errores asincrónicos! :) Muchas gracias guyz