Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 带有object元素的嵌套数组模式返回带有空对象的数组_Arrays_Node.js_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Arrays 带有object元素的嵌套数组模式返回带有空对象的数组

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

我希望有一个对象数组,即teamMembers应该是一个数组,并且应该有一个对象作为其属性名称和角色的元素。我没有收到任何错误,当我使用console.log(req.body)时,它的格式是我想要的,但是数组元素作为对象不会被发布到架构中

  _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"}]
}