Node.js 尝试通过mongoose在带有nodejs的文档上保存对象时出现问题
我得到了这个模式:Node.js 尝试通过mongoose在带有nodejs的文档上保存对象时出现问题,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我得到了这个模式: var schema = { id : { type:Number, unique:true }, name : String, kind : String, size : Object, skin : String, position : Object,
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
};
注意:以下此是业务对象的实例this.dao
设置如下:
这里是我获取数据的方法:
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)) ;
问题:
它对模式中的很多类型都很有效,但我在Object
type方面遇到了奇怪的问题
当我试图保存数据时,它适用于所有对象类型,但不适用于对象类型。控制台中显示了一个console.log(this.data.position){x:100,y:200}
。但是如果我像这样更改data.position
:data.position={x:100,y:200}
并在它工作后保存
我的假设:
可能是我的数据。当我尝试保存位置时,该位置具有原型属性,但无法保存数据。问题是我没有错误,在save函数的回调中,result
var显示了我的应用程序数据
注意:我只是看到它不是一个正式的SchemaType()
我的问题:
如何在mongoose文档中正确保存对象
?
如果保存失败,为什么我没有错误
(我更新到了最新版本3.8.8,我得到了同样的问题)。我得到了:
在混合类型(我的对象类型是什么)中,我们需要向mongoose指定它们随下面的函数而改变:
this.data.markModified('position')代码>
this.data.save((function(err,result,row){
if(err !== null) throw err;
if(row === 1) {
console.log(result);
this.emit("saved");
}
}).bind(this)) ;