我一直在试着弄清楚我的头发。我的文档显示它正在更新但不保存到数据库。基本上当我保存模块文档时,我希望更新层文档(这是有效的),并且层ID也要添加到当前模块文档中(它显示更新但不保存到数据库)
我的架构
var moduleSchema = new Schema({
title: {
type: String,
unique: true
},
description: String,
tier: [{
type: Schema.Types.ObjectId,
ref: 'Tier'
}]
})
我的自定义实例方法
moduleSchema.methods.saveInTier = function(tierTitles, cb){
// expects an array of tier names
var self = this;
var updateTier = function(i){
Tier.findOneAndUpdate({title: tierTitles[i]},
{$addToSet: {modules: self._id}},
function(err, tier){
if(err) throw err;
//self.tier.set(i, tier._id)
self.tier.addToSet(tier._id)
console.log("module saved in tier: ", tier.title)
return self.tier
})
}
for(var j=0;j<tierTitles.length;j++){
updateTier(j)
}
}
创建文档
var module = new Module({
title: "Chat"
})
module.saveInTier(['default','gold'])
module.save(function(err){
if(err){
if(err.code == '11000'){
console.log("module already exists")
} else {
throw err
}
}
console.log("module shows its been updated")
console.log("NEW module: ", module)
})
访问数据库
Module.find({}, function(err, docs){
console.log(docs) // the tier field is not updated in the database
})