我试图在中间件预保存方法中将一个元素添加到模式对象中,我将配置定义为strict:false。期望将这个新元素添加并保存到对象中。以下是我正在处理的代码。
var mongoose = require('mongoose');
var connection = mongoose.connect('mongodb://localhost/my_database');
var Schema = mongoose.Schema
var User = new Schema({
author : String
, type : String
}, { strict: false });
var MyUserModel = mongoose.model('User', User); //create and access the model User
var u = new MyUserModel({author:'mark',type:'novel'});
u.pre('save', function(next, req){
var self = this;
self.view = 'ALL';
console.log("pre save");
next();
});
u.save(function(err){
if (err) console.log(err);
});
问题是无法将新元素(视图)保存到集合中。
答案 0 :(得分:2)
您需要使用set
:
self.set('view', 'ALL');
对于不在架构中的属性,Mongoose无法创建一个setter(而对于架构中 的属性,它确实如此,因此self.author = '...'
会< / em> work),所以你必须明确地设置它。