2017-01-22 7 views
0

私は2つのスキーマ(MatchとMember)を持っています。 Matchには、メンバーの配列が含まれます。私はあたりhttp://mongoosejs.com/docs/populate.htmlMongoose配列のサブ文書を作成する

.populate({ 
    path: 'players', 
    populate: {path: 'player'} 
}) 

パーマングースのデバッグでたObjectIdを移入しようとしている

var MatchSchema = new Schema({name: String, players: [{ 
    player: { 
     type: Schema.ObjectId, 
     ref: 'Member'}, 
    play: Boolean}]}); 

var MemberSchema = new Schema({ 
    firstName: String, 
    lastName: String}); 

、matches.findクエリが...、2が加盟たObjectIdを期待

Mongoose: matches.findOne({ _id: ObjectId("5883a57362f0ca10945b305a") }, { fields: undefined }) 
Mongoose: matches.find({ _id: { '$in': [ ObjectId("58502d28e88746467d48b424"), ObjectId("583c82ef5274831a5443fa53")] } }, { fields: undefined }) 
を返します。

ですが、match.players.playerにはfirstNameまたはlastNameが入力されていません。

私は、母集団構文のすべての組み合わせ/オプションを試したと思います。何か案は?

+0

あなたはあなたが質問に入れた結果を得るために何をコンソール化しましたか?私はモンゴースがこのような結果を出すのを見たことがありません。 –

+0

このコードをサーバーに追加するだけです。-mongoose.set( 'debug'、true); 'クライアントではなくサーバーのコンソール/端末を確認してください。 –

答えて

0

あなたは正しい経路に行こうとしていますが、入力が間違っています。

ネストされた母集団の代わりにplayers.player(それにplayersおよびplayerが入る)を挿入する必要があります。 playersは参照ではなく配列であり、players.playerは参照です。そのため、メソッドが機能しないのです。これはあなたのために働く必要があります

.Populate('players.player') 

はこれを試してみてください。

+0

それは私のために働かなかった。私は、サーバーコールをあまり複雑にしないためにデータを再構築する過程にあります。それが私のために働くかどうかアドバイスします。 –

+0

表示されているエラーは何ですか?また、あなたがやっている構造上の変更は何ですか? –

+0

上記の '{fields:undefined} 'と同じエラーです。私は、プレイヤー配列内のObjectを削除し、メンバーObjectIdの配列を使用しています。 –

関連する問題