Arrays 带有object元素的嵌套数组模式返回带有空对象的数组
我希望有一个对象数组,即teamMembers应该是一个数组,并且应该有一个对象作为其属性名称和角色的元素。我没有收到任何错误,当我使用console.log(req.body)时,它的格式是我想要的,但是数组元素作为对象不会被发布到架构中Arrays 带有object元素的嵌套数组模式返回带有空对象的数组,arrays,node.js,mongodb,mongoose,mongoose-schema,Arrays,Node.js,Mongodb,Mongoose,Mongoose Schema,我希望有一个对象数组,即teamMembers应该是一个数组,并且应该有一个对象作为其属性名称和角色的元素。我没有收到任何错误,当我使用console.log(req.body)时,它的格式是我想要的,但是数组元素作为对象不会被发布到架构中 _id: mongoose.Schema.Types.ObjectId, teamName: { type: String, unique: true }, teamMembers: { name: { type: Strin
_id: mongoose.Schema.Types.ObjectId,
teamName: { type: String, unique: true },
teamMembers: {
name: {
type: String, unique: true, lowercase: true, required: true
},
role: {
type: String,
enum: ['goal keeper', 'central back', 'central midfield', 'central forward', 'left wing',
'attacking midfield', 'central forward', 'left midfielder', 'striker', 'defending', 'right midfielder'],
required: true
},
type: Array
},
description: String,
createdAt: { type: Date, default: Date.now() },
updatedAt: { type: Date, default: Date.now() }
});
teamSchema.plugin(uniqueValidator); ```
I am not getting the desired result. Here is my collection from mogodb
我的代码是正确的,我没有从postman正确发布对象数组 它也适用于原始json/urlencoded
{
"teamName": "Arsenal",
"teamMembers": [{"name": "bernd leno", "role":"goal keeper"}, {"name": "Emiliano Martinez", "role":"goal keeper"}]
}
teamMembers:{name,role},
-这不是一个数组,基本上我在代码中没有看到添加预期数组内容的有效尝试。此外,对于该属性上的对象数组,架构不正确。应该是teamMembers:[{name:String,role:{..all stuff..}}]
,这是具有这两个已定义属性的对象数组的定义。另外非常重要的是,您不希望数组成员上有唯一集。这实际上意味着集合的索引是唯一的,而不是像您假定的那样在数组中是唯一的。索引不强制MongoDB中的数组唯一性。这只会导致问题,因为您很可能希望该属性出现在集合的多个文档中,即使您希望它在单个文档的数组中是唯一的。有关其他详细信息或更正,请使用问题上的。注释不是这些注释的位置。我发布的团队模型是正确的,因为我将类型指示为数组,teamMembers:{name:{type:String,unique:true,lowercase:true,required:true},role:{type:String,enum:[‘守门员’、‘中后卫’、‘中中场’、‘中锋’、‘左翼’、‘进攻中场’、‘中锋’、‘左中场’、‘前锋’、‘防守’、‘右中场’],必填项:true},类型:数组//类型是数组……这是可伸缩的}
在许多console.log之后,我意识到名称和角色参数未定义。我现在面临的问题是如何从post man发布数组对象。这对我不起作用,因为req.body.name和req.body.role将未定义“teamMembers”:[{“name”:“bernd leno”,“role”:“goal keeper”}]
Expected result
``` "teamMembers":[{"name": "bernd leno", "role": "goal keeper"}] ```
Gotten result ``` "teamMembers":[{}] ```
Here is my below
```static async addTeam(req, res) {
const {
teamName, teamMembers, description
} = req.body;
try {
if (!req.user.isAdmin) {
return response(res, 404, 'error', {
message: messages.unAuthorizedRoute
});
}
const teams = new TeamModel({
_id: new mongoose.Types.ObjectId(),
teamName,
teamMembers,
description
});
const team = await teams.save();
if (team) {
return response(res, 201, 'success', { team });
}
} catch (error) {
(error.errors.teamName.name === 'ValidatorError')
? response(res, 409, 'error', {
message: messages.duplicateName
})
: response(res, 400, 'error', {
message: messages.error
});
}
}```
{
"teamName": "Arsenal",
"teamMembers": [{"name": "bernd leno", "role":"goal keeper"}, {"name": "Emiliano Martinez", "role":"goal keeper"}]
}