2015-06-21 5 views
0

У меня есть следующий пост вызова:Как обрабатывать casterror node.js?

.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

Проблема здесь вы пытаетесь использовать модель (Address) при определении вашей встроенной схемы в вашем MemberSchema. Вы должны использовать Schema при определении embedded docs, а не моделей.

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

Это модель в соответствии с вашим экспортным заявлением в соответствующем файле. Либо экспортировать схему, или лучше, вы можете получить доступ к схеме из модели, как это: Address.schema

Так изменить эту строку в MemberSchema определения

address: [Address], 

к этому

address: [Address.schema], 

и в любом месте иначе вы используете его так же, как и там, например, award : [Award.schema],

+0

О, мой модный лорд, я сам себя убил. Это нигде в какой-либо документации. Это круто. Спасибо. – arcee123

Смежные вопросы