2017-10-17 15 views
0

サーバーからデータを取得する必要があるときにサーバーの壁に当たってしまいました。 以下は私のスキーマを表しますノードjs、mongodbに人口が設定されています

Schema one:{ 
name: String 
} 
Schema two:{ 
code:String, 
name_id: refid: schema One 
} 
Schema three:{ 
phone:number 
code:[refid: Schema two] 
} 

私は、スキーマ3からのデータ、およびコード配列私が移入を使用すると私はオブジェクトIDが参照するオブジェクトになるだろうに保存されているオブジェクトIDからオブジェクトを必要に応じて。 質問は、データが移入される可能性はありますか?私のようなオブジェクトになるだろう 移入スキーマ3 場合:私は名前IDを移入したい先の例では

{phone : 000911, 
code: :{code:String, 
name_id: refid: schema One} 

を、可能ということでしょうか?

マングースで
+0

検索https://stackoverflow.com/questions/9621928/how-do-i-query-referenced- $使用してみてくださいobjects-in-mongodb/39476690#39476690 – sidgate

+0

スキーマは3です_code_:refid:スキーマ1または2?また、あなたはMongooseを使用していますか? – TGrif

+0

スキーマ3つのコードがスキーマ2から参照されています。はい、mongooseを使用しています – motchezz

答えて

1

、あなたは次のようにドット表記を使用してスキーマを移入することができます

const One = new Schema({ 
    name: String 
}) 

const Two = new Schema({ 
    code: String, 
    name: { 
    type: Schema.ObjectId, 
    ref: 'One' 
    } 
}) 

const Three = new Schema({ 
    phone: number 
    code: [{ 
    type: Schema.ObjectId, 
    ref: 'Two' 
    }] 
}) 


Three.find((err, three) => { 
    if (err) console.log(err) 
    console.log(three) 
    // => { 
    //  phone : "the phone number from schema Three", 
    //  code: { 
    //  code: "the code from schema Two", 
    //  name: "the name from schema One" 
    //  } 
    // } 
}) 
.populate('code.name') 
+0

コードがIDの配列の場合はどうなりますか? – motchezz

+0

と私は別の人口が必要な場合、ゼロスキーマと、私は3から2に1ゼロを設定する必要があった – motchezz

+0

それはあまりにも配列で動作します。 3つ目のレベルを追加する必要がある場合は、別のドットプロパティを追加するだけです。 [populate](http://mongoosejs.com/docs/populate.html)を参照してください。 – TGrif

関連する問題