尝试过滤时猫鼬结果总是空的
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 ObjectId
与 string
不同,即使它们看起来相同。
要获得您想要的行为,只需将您的存储库调用更改为类似以下内容:
const treatments = await repository.getByDoctorId("6260a98cbad424eec4818556")
这应该可以解决问题。
注意:避免在图像中显示此类信息。它通常会吓跑帮助。
我正在尝试通过字段 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 ObjectId
与 string
不同,即使它们看起来相同。
要获得您想要的行为,只需将您的存储库调用更改为类似以下内容:
const treatments = await repository.getByDoctorId("6260a98cbad424eec4818556")
这应该可以解决问题。
注意:避免在图像中显示此类信息。它通常会吓跑帮助。