elemMatch для полей разных уровней - PullRequest
0 голосов
/ 13 марта 2020

Я задаю этот вопрос после попытки решить эту проблему в течение всего дня. Я хочу получить адрес моих пользователей по userId и addressId. Поскольку я получаю данные из почтовых запросов, мне нужно убедиться, что запрос содержит и userId, и addressId, чтобы избежать проблем с безопасностью. В результате запроса ниже возвращаются все адреса моего пользователя, а не только адрес, содержащий правильный addressId.

async getUserAddress(_id: string, addressId: string) {
        const user = await this.userModel.findOne(
            {
                _id,
                addresses: {
                    $elemMatch: {
                        addressId: Types.ObjectId(addressId)
                    }
                }
            }
        )
        if (!user) {
            throw new NotFoundException();
        }
        return user.addresses[0];
    }

, поскольку невозможно использовать $elemMatch на разных уровнях документа или даже на На верхнем уровне запроса я не нашел лучшего способа сделать этот запрос без использования фильтров. Есть какие-нибудь идеи?

Tks заранее

...