Пн goose: заполнить элемент массива вложенных документов в массиве вложенных документов - PullRequest
0 голосов
/ 07 августа 2020

Я создал две схемы; userSchema и boardSchema .

boardSchema содержит массив вложенных документов groupSchema .

groupSchema содержит массив поддокументов issueSchema .

issueSchema имеет свойство ' assign_user ', которое ссылается на userSchema

//userSchema
const userSchema = new Schema(
  {
    username: {...     
    },
    fullname: {
     ...
    },
   }
 ),

//boardSchema
 
const issueSchema = new Schema({ 
  {
    summary: {...
    },
   ....

    assigned_user: {
      type: mongoose.Schema.Types.ObjectId,
      ref: "User",
    },
  }
 );

const groupSchema = new Schema(
  {
    title: {
      type: String,
    },
    issue: [issueSchema],
  },
);

const boardSchema = new Schema(
  {
    name: {...
    },
    groups: [groupSchema],
   
  { timestamps: true }
);

Я пытался заполнить Документ о проблеме текущим пользователем следующим образом:

const { id, group_id, issue_id } = req.params;
await Board.findById(id)
      .populate(`groups.id(${group_id})
      .issue_id(${issue_id})
      .assigned_user`

есть ли более простой способ go об этом? Кажется, не удается найти способ обойти таргетинг на указанный c документ Issue без переполнения объекта запроса идентификатором каждого родительского документа.

вот пример документа Board

{
    "board_type": "public",
    "reports": [],
    "_id": "5f2b672aa78eaa2ac0f5a30c",
    "name": "survivor",
    "groups": [
        {
            "issue": [
                {
                    "resolved": false,
                    "tags": [],
                    "reporters": [],
                    "_id": "5f2b67a0a78eaa2ac0f5a30e",
                    "summary": "issue A",
                    "createdAt": "2020-08-06T02:14:56.730Z",
                    "updatedAt": "2020-08-06T11:44:51.098Z",
                    "assigned_user": "5ecdf5e059dc404f5caedb82"
                }
            ],
            "_id": "5f2b6753a78eaa2ac0f5a30d",
            "title": "team A",
            "createdAt": "2020-08-06T02:13:39.174Z",
            "updatedAt": "2020-08-06T11:44:51.098Z"
        }
    ],
    "createdAt": "2020-08-06T02:12:58.815Z",
    "updatedAt": "2020-08-06T11:44:51.099Z",
    "__v": 1
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...