我有一个用户和医生集合/模型。这是
中的文件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