const ep = new eventproxy();
ep.fail(next);
EveryDay.getRankByTodayDate(TodayDate, ep.done('ranks'));
ep.all('ranks', function(ranks){
ranks.forEach(function(rank){
User.getUserById(rank.userId, ep.done(function(user){
rank.nickName = user.nickName; //这里不生效
console.log(rank,rank.nickName); rank.nickName 有值,但是打印出的rank没有nickName 属性
ep.emit('user');
}))
});
rank.nickName = user.nickName;
Why does assigning a value directly like this not take effect? How should we save the queried user nickname into the data object?
The reason is @nightclub小新新’s answer.
Currently, I use this method to deal with:
I will add more when I find better answers later.
You will know by debugging the data structure of the query results of mongoose. Only the data defined by your schema can be operated on mongoose data. Only the get/set methods are available. Other undefined attributes cannot be operated unless they are saved to _doc. in or converted into a normal object