Mongodb(使用typescript) - findOne过滤器将数字类型的_id转换为字符串

时间:2018-03-26 08:44:33

标签: mongodb typescript

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;
      })
    );
  }

0 个答案:

没有答案