2017-01-05 31 views
0

我是MongoDB/Mongoose的新手,我试图将用户与网站集进行匹配。这个想法是,用户被分配到一个网站。我想根据存储在网站集中的ID获取此用户名,然后显示它。用户名可以改变,所以我不能使用subdocs。Node,Mongoose js - 填充永不返回结果

在尝试使用填充将用户名绑定到我的查询时,查询从不返回结果。没有错误,没有任何东西。人们可以称它为挂机,但它是异步的,所以无论mongo在后台做什么,我都不知道。

我的验证系统是passport.js。

这里是我的模型:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var passportLocalMongoose = require('passport-local-mongoose'); 

var Account = new Schema({ 
    username: String, 
    password: String, 
    isadmin: Boolean, 
    islocked: Boolean 
}); 

Account.plugin(passportLocalMongoose); 

module.exports = mongoose.model('Account', Account); 


var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var siteSchema = new Schema({ 
    title: String, 
    locked: Boolean, 
    userid: {type: mongoose.Schema.Types.ObjectId, ref: 'Account'} 
}); 

var Site = mongoose.model('Site', siteSchema); 

module.exports = Site; 

这里是我的查询:

Site.find({}.populate('userid'), function (err, postIn) { 
    if (err) { 
     throw err 
    } else { 
     res.send(postIn); 
    } 
}); 

任何想法 - 一直停留在这一段时间。

回答

0

使用.exec。它配置填充。

Site.find({}).populate('userid').exec(function (err, postIn) { 
     if (err) { 
      throw err 
     } else { 
      res.send(postIn); 
     } 
    }); 
+0

没有区别,结果相同。我通常不会使用exec,并总是得到结果。 – Kyle

+0

刚刚编辑丢失了)之后找到.populate –

+0

做到了它的工作.. –