Вы используете обратный вызов здесь return Stack.findOne( { _id: req.params.id }, function
и возвращаете stack
без изменений для следующего then
.Вы можете получить stack
с изменениями только внутри этого обратного вызова или добавив then
после Stack.findOne
:
// promise - search for workspace ...
var promise = Space.findOne( spaceId ).exec();
promise.then( function (space) {
return Stack.findOne( { _id: req.params.id })
.then(function (stack) {
stack.spaceTempName = space.name;
stack.name = 'test';
console.log(stack);
return stack;
})
.catch(function (err) { console.log(err) });
})
.then( function (stack) {
console.log(stack);
})
.catch(function(err) { console.log(err) });
Или, что еще лучше для удобства чтения, вы можете поместить его в функцию async
и использовать await
:
const updateSpaceName = async (req, res) => {
try {
// promise - search for workspace ...
promise = Space.findOne( spaceId ).exec();
const space = await promise();
const stack = await Stack.findOne( { _id: req.params.id } );
stack.spaceTempName = space.name;
stack.name = 'test';
console.log( stack );
// here you can pass stack to another promise
// and it will have changed name
await nextTestPromise(stack);
} catch (err) {
console.log(err);
}
}