当试图在nodejs和mongoose文档上保存一个对象时遇到问题

我有这个模式:

var schema = { id : { type:Number, unique:true }, name : String, kind : String, size : Object, skin : String, position : Object, velocity : Object, acceleration : Object, spritesheet : String, animation : Object, animations : Object, currentAnimation : String, visible : Boolean }; 

注意:以下是buisness对象的一个​​实例。 this.dao是这样设置的:

 var elementSchema = mongoose.Schema(schema); this.dao = mongoose.model('Element', elementSchema); 

这里你有我用来获取数据的方式:

 this.dao.findOne({"id":id},(function(err,result){ this.data = result; }).bind(this)) ; 

我这样保存在我的对象中:

 this.data.save((function(err,result,row){ if(err !== null) throw err; if(row === 1) { console.log(result); this.emit("saved"); } }).bind(this)) ; 

问题 :

它适用于架构中的很多types,但我遇到了Objecttypes的奇怪问题。

当我尝试保存我的数据时,它适用于所有,但不适用于对象types。 console.log(this.data.position)在控制台中显示{x:100,y:200} 。 但是,如果我改变data.position像这样: data.position = {x:100,y:200}并保存后,它的工作!

我的假设是:

可能是我的data.position有一个原型属性,当我试图保存它的数据不能被保存。 问题是我没有错误,并在保存函数的callback, resultvariables显示我的应用程序数据…

注意:我只是看到它不是一个官方的SchemaType( http://mongoosejs.com/docs/schematypes.html )…

我的问题:

如何正确保存文件中的Object用mongoose? 为什么我没有错误,如果保存失败?

(我更新到最新版本3.8.8,我得到了同样的问题)。

我明白了: http : //mongoosejs.com/docs/api.html#document_Document-markModified

在混合types(我的对象types是什么)中,我们需要指定他们用下面的函数改变mongoose:

this.data.markModified('position');