尝试过滤时猫鼬结果总是空的

Mongoose result always empty when tring to filter

我正在尝试通过字段 doctorId 获取 objectId 类型,但它总是 returns 一个空数组。我在没有过滤器的情况下对其进行了测试,它工作正常,所以我认为这不是涉及模型或连接的错误: 摩卡测试:

mongoose.connect('mongodb://localhost:27017/test')

chai.should()

describe('Get treatments by doctorId', () => {
    it("get two entries", async () => {
        const treatments = await repository.getByDoctorId(new mongoose.Types.ObjectId("6260a98cbad424eec4818556"))
        console.log(treatments)
        treatments.should.not.be.empty
    })
})

以及我用来获取数据的函数:

const getByDoctorId = async (doctorId) =>{
    console.log(doctorId)
    try{
        return await Treatment.find({doctorId: doctorId})
    }catch(ex){
        return null
    }
}

我要获取的数据:

根据您显示的图像,doctorId 而不是 ObjectId。这是一个string。查看它与 _id 之间的区别(即 ObjectId)。

它显然与 ObjectId 具有相同的格式,但过滤时就好像它是一个预计不会产生任何结果。 MongoDB's ObjectIdstring 不同,即使它们看起来相同。

要获得您想要的行为,只需将您的存储库调用更改为类似以下内容:

        const treatments = await repository.getByDoctorId("6260a98cbad424eec4818556")

这应该可以解决问题。


注意:避免在图像中显示此类信息。它通常会吓跑帮助。