web-dev-qa-db-ja.com

Node.js-Mongooseとの関係の作成

CustphoneSubdomainの2つのスキーマがあります。 Custphonebelongs_to a SubdomainおよびSubdomainhas_manyCustphones

問題は、Mongooseを使用して関係を作成することです。私の目標は、custphone.subdomainを実行して、Custphoneが属するサブドメインを取得することです。

私は自分のスキーマにこれを持っています:

SubdomainSchema = new Schema
    name : String

CustphoneSchema = new Schema
    phone : String
    subdomain  : [SubdomainSchema]

Custphoneの結果を印刷すると、次のようになります。

{ _id: 4e9bc59b01c642bf4a00002d,
  subdomain: [] }

MongoDBでCustphone結果に{"$oid": "4e9b532b01c642bf4a000003"}が含まれる場合。

custphone.subdomainを実行して、カストフォンのサブドメインオブジェクトを取得したい

57
donald

Mongooseの新しい populate 機能を試してみたいようです。

上記の例を使用します。

var Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId;

SubdomainSchema = new Schema
    name : String

CustphoneSchema = new Schema
    phone : String
    subdomain  : { type: ObjectId, ref: 'SubdomainSchema' }

subdomainフィールドは、次のような '_id'で更新されます。

var newSubdomain = new SubdomainSchema({name: 'Example Domain'})
newSubdomain.save()

var newCustphone = new CustphoneSchema({phone: '123-456-7890', subdomain: newSubdomain._id})
newCustphone.save()

subdomainフィールドから実際にデータを取得するには、もう少し複雑なクエリ構文を使用する必要があります。

CustphoneSchema.findOne({}).populate('subdomain').exec(function(err, custPhone) { 
// Your callback code where you can access subdomain directly through custPhone.subdomain.name 
})
122
Dan