0

Вот моя схема:Mongoose Populate не работает с массивом из ObjectIds

/** Schemas */ 
var profile = Schema({ 
    EmailAddress: String, 
    FirstName: String, 
    LastName: String, 
    BusinessName: String 
}); 

var convSchema = Schema({ 
    name: String, 
    users: [{ 
     type: Schema.Types.ObjectId, 
     ref: 'Profiles' 
    }], 
    conversationType: { 
     type: String, 
     enum: ['single', 'group'], 
     default: 'single' 
    }, 
    created: { 
     type: Date, 
     default: Date.now 
    }, 
    lastUpdated: { 
     type: Date, 
     default: Date.now 
    } 
}); 

/** Models */ 
db.Profiles = mongoose.model('Profiles', profile); 
db.Conversations = mongoose.model('ChatConversations', convSchema); 

module.exports = db; 

Тогда я пытаюсь заполнить пользователь, используя следующий код (http://mongoosejs.com/docs/populate.html):

db.Conversations.find(query).populate('users').exec(function (err, records)  { 
    console.log(records); 
}); 

Это возвращение records но users массива как пустой массив [].

Я также попытался наоборот (http://mongoosejs.com/docs/api.html#model_Model.populate):

db.Conversations.find(query, function (err, records) { 
    db.Conversations.populate(records, {path: "users", select: "BusinessName"}, function (err, records) { 
     console.log(records); 
    }); 
}); 

результаты одинаковы. Когда я проверял ссылки на записи коллекции профилей, есть.

Любая идея, что здесь не так?

+0

все похоже правый. и его работа для меня. cant увидеть что-нибудь не так – chirag

+0

какой работал? – Shreejibawa

ответ

3

Я получил это работает путем переименования модели (3-й arguement):

mongoose.model("Profiles", profile, "Profiles");

Выпуск Mongoose искал profiles коллекции, но его там Profiles в базе данных. Поэтому я переименовал его в Profiles в соответствии с точным именем.

Phewww! Благодаря мне.

0

Я обнаружил, что вы указали схему профиля, но настроили профили.

ref: 'Profiles' 

var profile = Schema({ 
EmailAddress: String, 
FirstName: String, 
LastName: String, 
BusinessName: String 
}); 
+0

нет связь между этими двумя. Его просто переменная. PLS проверить мой ответ для более подробной информации. – Shreejibawa

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