如何处理node.js casterror?

arcee123

我有以下电话:

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

我在这里为此而苦苦挣扎。如果有人能看到为什么我会收到此错误,将不胜感激。

非常感谢

滞后反射

这里的问题是,Address当您在.NET中定义嵌入式模式时,您尝试使用Model(MemberSchema您应该在定义嵌入式文档而不是模型使用Schema

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

根据相关文件中的导出语句,这是一个模型。要么导出模式,要么更好,您可以像下面这样从模型访问模式:Address.schema

因此,请在您的MemberSchema定义中更改此行

address: [Address],

对此

address: [Address.schema],

在您使用它的其他任何地方,也有类似的变化,例如 award : [Award.schema],

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章