首页 文章

尝试使用nodejs通过mongoose在文档上保存对象时出现问题

提问于
浏览
1

我有这个架构:

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 是商务对象的实例 . 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)) ;

The problem :

它适用于很多类型的模式,但我遇到了 Object 类型的奇怪问题 .

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

My hypothesis :

可能是我的data.position有一个原型属性当我尝试保存它并且无法保存数据 . 问题是我没有错误,在保存功能的回调中, result var显示了我的应用程序数据...

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

My questions :

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

(我更新到最后一个版本3.8.8,我遇到了同样的问题) .

1 回答

相关问题