将objectIds列表添加到集合中的数组(ref)

时间:2016-02-01 05:48:52

标签: javascript arrays node.js mongodb mongoose

我有一个用户和医生集合/模型。这是

中的文件
module.exports = function(mongoose){
    var User = mongoose.Schema({
        username: {type : String, unique : true},
        password : String,
        nameOfOrg : String,
        workers : [],
        doctors : [{type : mongoose.Schema.Types.ObjectId, ref : Doctor}],
        patients : [{type : mongoose.Schema.Types.ObjectId, ref : Patient}]
    })

    var Doctor = mongoose.Schema({
        name : String,
        address : String,
        parentOrg :[{type : mongoose.Schema.Types.ObjectId, ref : User}],
        patients :[{type : mongoose.Schema.Types.ObjectId, ref : Patient}]

    })

    var Patient = mongoose.Schema({
        name : String,
        DOS : String,
        parentOrg :[{type : mongoose.Schema.Types.ObjectId, ref : User}],
        parentDoctor : [{type : mongoose.Schema.Types.ObjectId, ref : User}]
    })

    var models = {
        User : mongoose.model("user", User),
        Doctor : mongoose.model("doctor", Doctor),
        Patient : mongoose.model("patient", Patient)
    };
    return models;
}

我每次去那里都有一个像doctor/:name这样的路由处理程序我把这个参数放在数据库中,所以doctor/doc1将doc1添加到医生集合中的name字段。那么每次发生这种情况我都试图将这个新创建的文档的objectId添加到users集合中的doctors数组中。我认为这是你应该做的事情,以便将来使用populate将数据分成不同的集合,然后将适当的部分组合在一起。当我去路线时,我在向用户集合中的医生阵列添加医生ID时遇到问题。这是路由app.js代码

mongoose.connect("mongodb://localhost/pop3");

var models = require("./db")(mongoose);

app.get("/:name", function(req, res){
    var user1 = new models.User({"username": req.params.name})
    user1.save(function(err, doc){
        if(err){
            console.log(err)
        }
        console.log(doc)
        res.send(doc)
        app.locals.user = doc
    })
})

app.get("/doctor/:name", function(req, res){
    var doctor = new models.Doctor({"name" : req.params.name, "parentOrg" : app.locals.user._id})
    // app.locals.user.doctors.push(app.locals.user._id)
    models.User.findOne({"username": app.locals.user.username}).push(doctor._id)
    doctor.save(function(err, doc){
        if(err){
            console.log(err)
        }

        console.log(doc)
        res.send(doc)
    })
});

我尝试将mongoose doc放在他们展示的填充图片上,以便通过演示来做类似的事情:

aaron.stories.push(story1); aaron.save(callback);

我想arron将成为刚刚保存的用户。

故事将是医生领域和

故事1将成为医生。

我无法做到

编辑 ::我在浏览器窗口中收到此错误: TypeError: models.User.findOne(...).push is not a function

0 个答案:

没有答案