복붙노트

[MONGODB] 몽구스 - ObjectId가 배열에 채우기를 사용

MONGODB

몽구스 - ObjectId가 배열에 채우기를 사용

내가 좋아하는 조금 보이는 스키마를 가지고 :

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
});

그러나 분명히 '사용자는'채우기되지 ...

나는이 작업을 수행 할 수있는 방법이 있나요?

해결법

  1. ==============================

    1.대신 컬렉션 이름의 스키마 경로의 이름을 사용합니다 :

    대신 컬렉션 이름의 스키마 경로의 이름을 사용합니다 :

    Conversation.findOne({ _id: myConversationId})
    .populate('recipients') // <==
    .exec(function(err, conversation){
        //do stuff
    });
    
  2. ==============================

    2.이 질문에 걸쳐 오는 다른 사람을 위해 .. 영업 이익의 코드는 스키마 정의에 오류가있다 .. 그것은해야한다 :

    이 질문에 걸쳐 오는 다른 사람을 위해 .. 영업 이익의 코드는 스키마 정의에 오류가있다 .. 그것은해야한다 :

    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);
    
  3. from https://stackoverflow.com/questions/10568281/mongoose-using-populate-on-an-array-of-objectid by cc-by-sa and MIT license