Я создал две схемы; 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
}