2014-04-01 115 views
1

我得到這個模式中的對象時:麻煩試圖挽救與上一個的NodeJS文件throught貓鼬

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)) ; 

問題:

It對於架構中的很多類型來說工作得很好,但我遇到了Object類型的奇怪問題。

當我嘗試保存我的數據時,它適用於所有,但不適用於對象類型。 console.log(this.data.position)在控制檯中顯示爲{x:100,y:200}。但如果我改變data.position像這樣:data.position = {x:100,y:200}並保存後,它的作品!

我的假設:

可能是我data.position有原型的屬性,當我試圖挽救它和數據無法保存。問題是,我沒有錯誤,並在保存功能的回調,顯示我的應用程序數據的result VAR ...

注:我剛纔看到,這不是一個官方的SchemaType(http://mongoosejs.com/docs/schematypes.html)...

我的問題:

如何在正確的文件保存Object與貓鼬? 爲什麼我沒有錯誤,如果保存失敗?

(我更新到最新版本3.8.8,我得到了同樣的問題)。

回答