2017-01-05 6 views
0

Я новичок в MongoDB/Mongoose, и я пытаюсь сопоставить пользователя с семейством сайтов. Идея состоит в том, что пользователь назначается сайту. Я хочу получить это имя пользователя на основе идентификатора, хранящегося в коллекции сайтов, и затем отобразить его. Имя пользователя может измениться, поэтому я не могу использовать поддоны.Узел, Mongoose js - Population никогда не возвращает результат

При попытке связать имя пользователя с моим запросом, используя populate, запрос никогда не возвращает результат. Нет ошибок, ничего. Можно было бы назвать это зависанием, но это асинхронно, поэтому, что бы ни делал в фоновом режиме, я не знаю.

Моя система аутентификации - паспорт.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

все сработало .. –