Mongodb findOne过滤器似乎将类型编号的_id转换为字符串。我正在使用打字稿。
打字稿:版本2.7.2, Mongodb:3.0.4, @ types / mongodb:3.0.5
这不起作用:
get(id: number): Promise<Dance | null> {
console.log(id); // id does indeed have the value 1
return this.Dances.findOne({ _id: id }); // returns null
}
我在mongodb日志中看到id已被转换为字符串,因为id在引号中。
为了确认我在日志中看到的内容,我将_id编码为1并确实返回了一个文档:
get(id: number): Promise<Dance | null> {
console.log(id); // id does indeed have the value 1
return this.Dances.findOne({ _id: 1 }); // returns the document
}
我错过了什么?
感谢。
我正在使用4层分层架构:客户端,Api,域,存储库。上面的代码来自Repository层。
以下是Api Layer的相关代码:
控制器操作:
get(req: Request, res: Response): void {
DanceService.get(req.params.id).then(r => {
if (r) res.json(r);
else res.status(404).end();
});
}
舞蹈服务:
get(id: number): Promise<Dance> {
L.info(`fetch dance with id ${id}`);
return unitOfWork.then(uow =>
uow.DanceRepository.get(id).then((dance: Dance) => {
console.log(dance);
return dance;
})
);
}