2015-06-21 70 views
0

我有以下職位電話:如何處理node.js casterror?

.post(function(req, res) { 
    member.findById(req.params.member_id, function(err, result) { 
    if (err) 
     return (err); 

    new_address = { 
     street1 : req.body.street1, 
     street2 : req.body.street2, 
     City : req.body.City, 
     State : req.body.State, 
     Zip : req.body.Zip, 
     Lat : req.body.Lat, 
     Lng : req.body.Lng 
    }; 

    if(result.address === undefined){ 
     result.address.push(new_address); 
    } 
    else{ 
     result.address = [new_address]; 
    } 

    result.save(function(err) { 
     if (err) 
      return res.send(err); 

     res.json({ message: 'Address created!!!' }); 
    }); 

    }); 

}); 

出於某種原因而試圖在result.save()電話,我收到此錯誤:

{ 
    "message": "Cast to undefined failed for value \"[object Object]\" at path \"address\"", 
    "name": "CastError", 
    "value": [ 
     { 
      "address_type": "Home", 
      "street1": "2018 Elliot St", 
      "City": "Alexandria", 
      "State": "LA", 
      "Zip": 71301, 
      "Lat": 12, 
      "Lng": 32 
     } 
    ], 
    "path": "address" 
} 

我的地址模式是會員架構的孩子,看起來像這樣:

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema 

var AddressSchema = Schema({ 
    Address_type : String, 
    street1 : String, 
    street2 : String, 
    City : String, 
    State : String, 
    Zip : Number, 
    Lat : Number, 
    Lng : Number 
}); 


module.exports = mongoose.model('Address', AddressSchema); 

這裏是構件架構:

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema 

var Address = require('./address'); 
var Award = require('./award'); 

var MemberSchema = Schema({ 
    FName : String, 
    LName : String, 
    address: [Address], 
    phone : { 
    type : String, 
    number : String 
    }, 
    email: String, 
    gender: String, 
    DOB: Date, 
    rank : { 
    level : String, 
    updated: { type: Date, default: Date.now } 
    }, 
    Awards : { 
    personal : Boolean, 
    award : [Award], 
    granted: { type: Date, default: Date.now } 
    } 
}); 


module.exports = mongoose.model('Member', MemberSchema); 

我在這裏苦苦掙扎。如果任何人都可以看到爲什麼我得到這個錯誤,我將不勝感激。

感謝很多

+0

你可以發佈成員模式嗎? –

+0

同樣的事情發生在獎項上嗎?我沒有看到用這種方式使用模式。不是說這一定是錯誤的,但是如果'Awards.award.push'也不起作用,我們可能會進行一些嘗試。 –

+0

這是我第一次嘗試。當地址正在工作時,我將獲得獎勵。當我希望智慧到來時,我會繼續嘗試。 – arcee123

回答

0

這裏的問題是你想在你的MemberSchema定義嵌入式架構時使用模型(Address)。當定義embedded docs時,您應該使用架構,而不是模型。

var Address = require('./address'); 

這是一個模型,根據您在相關文件中的導出語句。無論是出口的模式,或更好的,你可以從模型這樣的訪問模式:Address.schema

所以在你MemberSchema定義改變這一行

address: [Address], 

這個

address: [Address.schema], 

,任何地點否則你使用它就像那裏的變化一樣,如award : [Award.schema],

+0

哦,我的怪胎主,我一直在爲此而自殺。在任何文檔中都沒有。這太棒了。謝謝。 – arcee123