我是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"
}
]
}
请让我知道我做错了什么。
答案 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
适用于简单文档,但对于嵌套文档,我们必须分别指定字段,许多不必要的代码,但这就是它的工作原理。