/ / Как да обещая моя клас в nodejs - node.js, мангуста, bluebird

Как да обещая моя клас в nodejs - node.js, мангуста, bluebird

Използвам bluebird за внедряване на promisify в моя персонализиран lib. Имам фолинг либ
потребител, lib-1, lib-2 и т.н.

При регистрация на потребителя, от моя потребител рутер

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

При метода на валидиране хвърлям грешки от типа

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

При метода на запис mongooes modal също има някои проверки, като потребител вече съществува, така че не може да създаде потребител.

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

Всичко по-горе е само моето очакване. Искам да изпратя целия отговор от user_router.js. (Моят потребителски модул вече е внедрен, сега трябва да го интегрирате от bluebird)

Сега въпрос:

  • Как мога да го направя от bluebird? Как да включите метода за разрешаване / отхвърляне потребителски обект (изрично) ??
  • Ако валидирането метод хвърли грешка, тогава го ще бъде уловен по метода на улавяне на рутер ???
  • Как мога да изпратя всеки грешка / отхвърляне на улавянето на рутера от mongooes (виж потребителския регистър метод)?

    Надявам се, че ще получите моите точки. Благодаря предварително!!
    Можете също да споделите всяка примерна връзка за изпълнение на тези неща.

Отговори:

0 за отговор № 1

Сега използвам опитайте улов за нормално изявление и използвам обещание за обработка на грешки при асинхронизация !! :) Благодаря много guyz