2017-12-28 3 views
0

Ich habe zwei Sammlungen, eine ist Benutzer und eine andere ist Katzen. Ich möchte Katzen Daten unter meiner Benutzersammlung. Aber ich bekomme es nicht.Populate Schema auf Mongoose

user.js

var Schema = mongoose.Schema; 
var userSchema = Schema({ 
_id: Schema.Types.ObjectId, 
username: String, 
email: { type: String, unique: true, lowercase: true, trim: true }, 
password: String, 
role: String, 
cats: [{ type: Schema.ObjectId, ref: 'Cat' }] 
}); 
var User = mongoose.model('User', userSchema); 
exports.default = User; 

Cat.js

var mongoose = require("mongoose"); 
var Schema = mongoose.Schema; 
var catSchema = Schema({ 
fname: String, 
mname: String, 
lname: String, 
}); 
var Cat = mongoose.model('Cat', catSchema); 
exports.default = Cat; 

O/p

"_id": ObjectId ("5a446ab43533970b8489e1ac"), "username": " xyz ", " email ":" [email protected] ", " passwort "" $ 2a $ 10 $ ogerY6OiCRKy9TjPYERaOugUJeqelBl .yToJ4ZBX3ac2MVZQpsKOu“, "Rolle": "user", "Katzen": [], "__v": 0

Erwartete Ausgabe

"_id": ObjectId ("5a446ab43533970b8489e1ac"), "username": "xyz", "E-Mail": "[email protected]", "password" "$ 2a $ 10 $ ogerY6OiCRKy9TjPYERaOugUJeqelBl.yToJ4ZBX3ac2MVZQpsKOu", "Rolle": "user", „cats ": [{ " _id ": Objekt-ID (" 5a44707effc66a234447c36b "), "fname": "felix", "mname": "", "lname": "", }], "__v": 0

Antwort

0

Sie könnten sie in nur einem Schema kombinieren wie unten. keine jeder möglichen Grund Schemata separat zu erstellen, wenn die Array Zahl kontinuierlich ein paar hundert erhöht ..

var Schema = mongoose.Schema; 
var userSchema = Schema({ 
    _id: Schema.Types.ObjectId, 
    username: String, 
    email: { type: String, unique: true, lowercase: true, trim: true }, 
    password: String, 
    role: String, 
    cats: [ 
    { 
     _id: Schema.Types.ObjectId, 
     fname: String, 
     mname: String, 
     lname: String, 
    } 
    ] 
}); 
var User = mongoose.model('User', userSchema); 
exports.default = User; 
+0

Ich habe 10+ Sammlungen, und ich will Ich denke, die obige Methode wird komplizieren – Chris

+0

Ich fand einen Kernpunkt darüber.Wenn Sie noch nicht gesehen haben, können Sie einen Blick - https://gist.github.com/troyk/1892652 – efkan