CNode

mongoose 通过UserId 获取用户信息,不能保存到对象

问答
YYouthink发布于9 年前最后回复9 年前11 回复3974 浏览0 收藏

我参照 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) => {
	...
	}
	)
查看回复

回复 (11)

I
i5ting#1·9 年前

@alsotang

Y
Youthink#2·9 年前

@i5ting

I
im-here#3·9 年前

nickName 在model里有定义么? mongoose 如果model里没定义的话 是保存不进去的

A
alsotang#4·9 年前

我也感觉是 nickName 在 model 中未定义 @i5ting @imhered

I
im-here#5·9 年前
Y
Youthink#6·9 年前

@i5ting @alsotang @imhered https://github.com/cnodejs/nodeclub/blob/master/proxy/topic.js#L96 这里的 topic.author model 里不是也没有定义 只有 author_id 是不是我理解错了?

I
im-here#7·9 年前
引用 Youthink@i5ting @alsotang @imhered https://github.com/cnodejs/nodeclub/blob/master/proxy/topic.js L96 这里...

@Youthink 这里是查询不是写入吧? 你看这个方法名 getTopicsByQuery

Y
Youthink#8·9 年前

@imhered 对啊,这里不是把查询出来的用户信息 赋值给了 topic.author ?

I
im-here#9·9 年前
引用 Youthink@imhered 对啊,这里不是把查询出来的用户信息 赋值给了 topic.author ?

@Youthink 哦,不好意思。我一开始没注意看。我理解成了写入了。 我只知道写入的话model中未定义是不行的。 读取我就不知道了。 实在不行构建一个新的object,把需要的东西给赋值进去吧

Y
Youthink#10·9 年前

@i5ting @alsotang https://github.com/cnodejs/nodeclub/blob/master/proxy/topic.js#L96 这里的 topic.author model 里不是也没有定义 只有 author_id 是不是我理解错了?

C
CooooSo#11·9 年前

@Youthink model未定义的字段 将查询出的entity toJSON一下

参与回复
登录后即可参与回复。登录