Я определил слои в проекте node.js.
Структура будет выглядеть примерно так:
user.service.js
user.controller.js
Service
будет вызываться из Controller
, а внутри Service
будет вызываться mongoose findOneAndUpdate
.
Теперь я хочу вернуть объект Custom.с Service
после обновления, но объект result
всегда неопределен в Controller
user.service.js
async function activate(tokenParam)
{
await User.findOneAndUpdate(
{
activationToken: tokenParam
},
{
$set:{isActive:true}
},
{
new: true,
useFindAndModify: false
})
.exec()
.then(function (err, doc) {
var result = new Result();
if (err)
{
result.hasData = false;
result.exception = err
}
else
{
result.hasData = true;
result.data = doc.isActive
}
console.log("User Service: Result: " + result)
return result;
});
}
пользователя.controller.js
userService
.activate(req.params.token)
.then(result => {
console.log("User Controller: Activate:" + result);
if (result && result.hasData && result.data) {
res.status(200).json(result); //Account Activated
} else {
res.status(401).json(result); //Account Not Activated
}
})
.catch(err => next(err));
Ожидаемый вывод
//console.log("User Service: Result: " + result)
User Service: Result: { ... }
//console.log("User Controller: Activate:" +result)
User Controller: Activate: Result: { ... }
Фактический вывод
//console.log("User Service: Result: " + result)
User Service: Result: { ... }
//console.log("User Controller: Activate:" +result)
User Controller: Activate: undefined
Есть идеи?