2016-07-25 1 views
0

ich eine verschachtelte Subschemas benötigen ids mit, so dass ich den Code unten versucht, aber Daten Code Mein Modell ..Fehler aufgetreten in verschachtelten Subschemas Sammlungen mit Mungo

var connection= handler.getConnection(); 
console.log(connection); 
autoIncrement.initialize(connection); 

var subSchema = mongoose.Schema({ 
    course_Submodule: [{ 
     type: String, 
     required: true, 

    }] 
},{ _id : false }); 
subSchema.plugin(autoIncrement.plugin, { 
    model: 'Submodule', 
    field: 'Id_submodule', 
    startAt: 1, 
    incrementBy: 1 
}); 

var courseSchema = new Schema({ 
    course_Name: String, 
    course_Code: String, 
    course_Submodule: [subSchema], 
    course_Author: String, 
    id_subject: String, 
    id_user: String, 
}); 

courseSchema.plugin(autoIncrement.plugin, { 
    model: 'Course', 
    field: 'Id_course', 
    startAt: 1, 
    incrementBy: 1 
}); 
var Course = connection.model('Course', courseSchema); 
var Submodule = connection.model('Submodule', subSchema); 
module.exports = Course; 

bt in db Daten eingefügt eingefügt Cant wie dies

"_id" : ObjectId("578efe6da667fff80d09d5ed"), 
    "Id_course" : 214, 
    "course_Name" : "chemistry1", 
    "course_Code" : "ch1", 
    "course_Author" : "David", 
    "id_subject" : "3", 
    "course_Submodule" : [ 
     { 
      "Id_submodule" : 14, 
      "course_Submodule" : [ ] 
     }, 
     { 
      "Id_submodule" : 15, 
      "course_Submodule" : [ ] 
     } 
    ], 

    "__v" : 0 

diesen Code versucht, kann ich nicht den Wert von course_Submodule.Is einfügen ther jede anotherway für mich die .help bitte

+0

Wenn Sie das Ergebnis eines anderen Schemas in Ihr vorhandenes Schema einfügen möchten, müssen Sie die Elemente nicht kopieren, sondern können nur die Objekt-ID speichern und das Objekt beim Abrufen aus der Datenbank auffüllen. Wenn Sie möchten, kann ich Ihnen ein kurzes Beispiel für die Implementierung geben. –

+0

ich möchte das Submodul wie diese speichern { _id: "mainId" subdocArray: [ { _id: "unwantedId", Feld: "Wert" }, { _id: "unwantedId", Feld: "Wert" } ] } – luee

+0

ja ich möchte tal code @AjitejKaushik – luee

Antwort

0

Anstatt die Daten zu duplizieren, können Sie einfach die Objekt-ID des anderen Objekts in Ihrem Schema speichern.

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

//Schema for doctors 
var StudentSchema = new Schema({ 
    name:{ 
     type: String, 
     required: true 
    }, 
    email: { 
     type: String, 
     unique: true 
    }, 
    user : { 
     type : Schema.ObjectId, 
     ref: 'User',  //i have a different model User 
     required : true 
    } 
}); 

module.exports = mongoose.model('Student', StudentSchema); 

Ihre Anfrage über Schüler-Schema kann wie folgt aussehen

db.collection.find(//condition, function(err, data){ 
     //your functionality 
}) 
.populate('User', 'dob') 
.exec(); 

Mein Benutzerschema dob ein Feld hat.

Dies ist ein kleines und sauberes Beispiel zur Vermeidung von Datenvervielfältigung.

Ich hoffe, es wird helfen.

Verwandte Themen