使用mongoose在嵌套的子架构集合中发生错误

时间:2016-07-25 07:30:47

标签: node.js mongoose

我需要一个有id的嵌套子程序,所以我尝试了下面的代码,但数据无法插入 码   我的模特..

 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就像这样插入

"_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

尝试这些代码我无法插入course_Submodule的值。我还有其他方法。请帮助我

1 个答案:

答案 0 :(得分:0)

您可以简单地将另一个对象的对象ID存储到您的架构中,而不是复制数据。

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);

您对学生模式的查询可能如下所示

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

我的用户架构有一个字段dob

这是一个小而整洁的例子,可以避免重复数据。

希望它会有所帮助。