对于路径上的值\“[object Object] \”,Cast to Array失败

时间:2017-03-04 20:39:25

标签: mongodb express mongoose mean

我是yeoman的generator-rest生成器,它使用mongoose,bodymen和express,我更新了生成器中提供的默认User模式。

当我向Postman发送请求时,我收到错误Cast to Array failed for value \"[object Object]\" at path \"corp_locations\"

在多个帖子中尝试所有可能的方法后,我无法修复此错误。

  

这是我的架构

const locationsSchema = new Schema({
  location_name: String,
  address: String,
  area: String,
  pincode: Number
})

const userSchema = new Schema({
  user_id: {
    type: String,
    required: [true, 'User Id is required.'],
    unique: true,
    trim: true,
    match: [/^\d{10}$/, 'User Id is invalid.']
  },
  password: {
    type: String,
    required: [true, 'Password is required.'],
    minlength: 6
  },
  email: {
    type: String,
    match: [/^\S+@\S+\.\S+$/, 'Email is invalid.'],
    required: [true, 'Email is required.'],
    unique: true,
    trim: true,
    lowercase: true
  },
  corp_locations: [locationsSchema],
  created_by: String,
  updated_by: String
}, {
  timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
})
  

帖子方法

router.post('/',
  master(),
  body(schema.tree)
  create)
  

控制器的创建方法

export const create = ({ bodymen: { body } }, res, next) =>
  User.create(body)
    .then((user) => user.view(true))
    .then(success(res, 201))
    .catch((err) => {

      res.status(409).json(validationMessages(err))
    })
  

这是邮递员发送的json

{
    "user_id" : "1000000002",
    "password" : "password",
    "email" : "email2@mail.com",
    "corp_locations" : [
        {
            "location_name": "loc1",
            "address": "arrd1",
            "area": "area1",
            "pincode": "9092230"
        }
    ]
}

请让我知道我做错了什么。

1 个答案:

答案 0 :(得分:3)

在很多谷歌之后,我发现了这一点。

https://github.com/diegohaz/bodymen/issues/1

这是一个关于健美运动员的问题,而post方法应该是这样的。

router.post('/',
  master(),
  body({user_id, email, password, user_type, corp_locations: [Object]}),
  create)

schema.tree适用于简单文档,但对于嵌套文档,我们必须分别指定字段,许多不必要的代码,但这就是它的工作原理。