CNode

mongoose findOne 怎么合并多个结果

Ddphdjy发布于12 年前最后回复12 年前4 回复6864 浏览0 收藏

Article.findById(aid, function (err, adoc){ adoc.user = User.findOne(adoc._id,function (err, udoc){ return udoc; }); return adoc; });

返回的是JQ对象和json的混合 怎么解决

查看回复

回复 (4)

D
dphdjy#1·12 年前
B
blacktea#2·12 年前
B
blacktea#3·12 年前
引用 blacktea楼主请看这里:http://mongoosejs.com/docs/populate.html

@dphdjy 这个没留意到。。你可以在官网找一下~

K
kiddkai#4·12 年前

Mongoose 本身可以 promise,那就可以这样写了:

var result;
Corpus.findById(corpusid)
      .populate('article')
      .exec()
      .then(function(corpus) {
         result = corpus;
         return corpus.article.populate('user').exec();       
       })
      .then(function(article) {
         result.article = article; // user已经 populate 出来了 :p           
       });

其实这个不是一个好的解决方法,你可以看 mongoose 的3.6的release notes 它已经支持 populate('parent.child')这样的写法了。

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