0

在尝试解决这个问题一整天后,我在问这个问题。我想得到我的用户userId地址addressId。由于我从发布请求中接收数据,因此我需要确保查询包含两者userIdaddressId以避免安全问题。下面的查询结果返回我用户的所有地址,而不仅仅是包含正确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在不同的文档级别使用,甚至无法在查询的顶层使用,我找不到更好的方法来进行此查询而不使用过滤器。有什么见解吗?

提前谢谢

4

0 回答 0