我参照 Cnode 源码写的项目,但不知道哪里出问题了,根据 userid 查询的用户信息不能保存到对象里。
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;
为什么直接这样赋值不生效那?这里应该怎么把查询到的用户昵称保存到数据对象里?
我看本站的源码就是直接赋值的,我遗漏了什么吗?麻烦大家,指点一下。
我在网上找到了这种解决方法,但是还是不懂本站的源码怎么处理的:
EveryDay.find({TodayDate}).lean()
.exec((err, ranks) => {
...
}
)
nickName 在model里有定义么? mongoose 如果model里没定义的话 是保存不进去的
@alsotang 1 2楼层层艾特 🤣😂
@i5ting @alsotang @imhered
https://github.com/cnodejs/nodeclub/blob/master/proxy/topic.js#L96
这里的 topic.author
model 里不是也没有定义 只有 author_id
是不是我理解错了?
@Youthink 这里是查询不是写入吧?
你看这个方法名 getTopicsByQuery
@imhered 对啊,这里不是把查询出来的用户信息 赋值给了 topic.author ?
@Youthink 哦,不好意思。我一开始没注意看。我理解成了写入了。 我只知道写入的话model中未定义是不行的。 读取我就不知道了。 实在不行构建一个新的object,把需要的东西给赋值进去吧
@i5ting @alsotang https://github.com/cnodejs/nodeclub/blob/master/proxy/topic.js#L96 这里的 topic.author model 里不是也没有定义 只有 author_id 是不是我理解错了?
@Youthink model未定义的字段 将查询出的entity toJSON一下