web-dev-qa-db-fra.com

Node.js - Création de relations avec Mongoose

J'ai 2 schémas, Custphone et Subdomain. Custphonebelongs_to a Subdomain et Subdomainhas_manyCustphones.

Le problème réside dans la création de la relation à l'aide de Mongoose. Mon objectif est de faire: custphone.subdomain et obtenir le sous-domaine auquel appartient le Custphone.

J'ai ceci dans mes schémas:

SubdomainSchema = new Schema
    name : String

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

Lorsque j'imprime le résultat Custphone, j'obtiens ceci:

{ _id: 4e9bc59b01c642bf4a00002d,
  subdomain: [] }

Lorsque le résultat Custphone a {"$oid": "4e9b532b01c642bf4a000003"} dans MongoDB.

Je veux faire custphone.subdomain et récupérez l'objet sous-domaine du custphone.

57
donald

Il semble que vous cherchiez à essayer la nouvelle fonctionnalité remplir dans Mongoose.

En utilisant votre exemple ci-dessus:

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

SubdomainSchema = new Schema
    name : String

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

Le champ subdomain sera mis à jour avec un '_id' tel que:

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

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

Pour obtenir réellement les données du champ subdomain, vous devrez utiliser la syntaxe de requête légèrement plus complexe:

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