2015-11-13 5 views
1

Я пробовал несколько разных вещей, и я просто не могу получить Mongoose для заполнения Users информации в сборнике Items.Mongoose .populate() не заполняется

Файл: users.js

var mongoose = require('mongoose') 
    Schema = mongoose.Schema, 
    ObjectId = Schema.Types.ObjectId; 

var userSchema = Schema({ 
    _id: ObjectId, 
    barcode: String, 
    name: String, 
    email: String, 
    type: String 
}); 

var Users = mongoose.model('Users', userSchema); 

module.exports = Users; 
module.exports.schema = userSchema; 

Файл: items.js

var mongoose = require('mongoose') 
    Schema = mongoose.Schema, 
    ObjectId = Schema.ObjectId, 
    Users = require(__dirname + '/users'), 
    userSchema = Users.schema; 

var itemSchema = Schema({ 
    _id: ObjectId, 
    name: String, 
    barcode: String, 
    transactions: [ { 
     date: Date, 
     user: { type: ObjectId, ref: 'Users' }, 
     status: String 
    } ] 
}); 

var Items = mongoose.model('Items', itemSchema); 

module.exports = Items; 
module.exports.schema = itemSchema; 

Это мой тестовый код:

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/booker'); 

var Users = require(__dirname + '/models/users'); 
var Items = require(__dirname + '/models/items'); 

Items.findOne().populate('user').exec(function(err, arr) { 
    console.log(arr); 
}); 

По существу, проблема заключается в том, что массив не заполняет информацию пользователя в элементах.

Что я делаю неправильно?

ответ

3

user поле, которое вы заселение вложен в суб-док вашего transactions поля массива, так что вы должны включить его полный путь в populate вызова:

Items.findOne().populate('transactions.user').exec(function(err, arr) { 
    console.log(arr); 
}); 
+0

Я понял это около 10 минут назад! Спасибо хоть! – unknowndomain

+0

Спасибо за это! –

Смежные вопросы