如何在没有模式定义的情况下将元素保存到集合中

时间:2014-02-04 11:03:12

标签: node.js mongodb mongoose

我试图在中间件预保存方法中将一个元素添加到模式对象中,我将配置定义为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);
});

问题是无法将新元素(视图)保存到集合中。

1 个答案:

答案 0 :(得分:2)

您需要使用set

self.set('view', 'ALL');

对于不在架构中的属性,Mongoose无法创建一个setter(而对于架构中 的属性,它确实如此,因此self.author = '...' 会< / em> work),所以你必须明确地设置它。