MongoDB: Как проверить пользователя в массиве - PullRequest
0 голосов
/ 04 апреля 2020

У меня проблема. Я создаю вопрос к MongoDB:

const team: TeamDocument = await Team.findOne({ members: payload.id, name })

Проблема в том, что members представляет собой массив объектов:

members: [{
    name: { type: Schema.Types.ObjectId, ref: 'User' },
    role: String
}]

Так что, когда я создаю ask, он показывает ошибку :

UnhandledPromiseRejectionWarning: ObjectParameterError: Parameter "obj" to Document() must be an object, got 5e88984b1478de32f43289e8

Как это исправить, чтобы он проверял, есть ли в массиве members объект, содержащий идентификатор, предоставленный в полезной нагрузке?

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Если у вас есть один запрос, который вам даже не нужно использовать $elemMatch, вы можете просто использовать:

const team: TeamDocument = await Team.findOne({ "members.name": payload.id })
1 голос
/ 04 апреля 2020

const team: TeamDocument = await Team.findOne ({members: {id: payload.id, name: name}})

Проверьте этот официальный пн go Документация; https://docs.mongodb.com/manual/tutorial/query-array-of-documents/

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