私は少し次のようなスキーマを持っています:
var conversationSchema = new Schema({
created: { type: Date, default: Date.now },
updated: { type: Date, default: Date.now },
recipients: { type: [Schema.ObjectId], ref: 'User' },
messages: [ conversationMessageSchema ]
});
つまり、私の受信者コレクションは、ユーザースキーマ/コレクションを参照するオブジェクトIDのコレクションです。
これらをクエリで入力する必要があるので、これを試しています:
Conversation.findOne({ _id: myConversationId})
.populate('user')
.run(function(err, conversation){
//do stuff
});
しかし、明らかに「ユーザー」は入力されていません...
これを行う方法はありますか?
コレクション名の代わりにスキーマパスの名前を使用します。
Conversation.findOne({ _id: myConversationId})
.populate('recipients') // <==
.exec(function(err, conversation){
//do stuff
});
この質問に遭遇した他の人にとっては、OPのコードのスキーマ定義にエラーがあります。
var conversationSchema = new Schema({
created: { type: Date, default: Date.now },
updated: { type: Date, default: Date.now },
recipients: [{ type: Schema.ObjectId, ref: 'User' }],
messages: [ conversationMessageSchema ]
});
mongoose.model('Conversation', conversationSchema);