我尝试在MongoDB和express中使用TypeORM,但我遇到了一些基本问题。
我刚刚为实体创建了一个控制器,具有基本的CRUD操作。方法保存,findAll和find by Filter工作正常,但我无法使需要mongo id的方法工作。
router.get("/", async(req: Request, res: Response) => {
const investmentRepository = getMongoRepository(Investment);
const investments = await investmentRepository.find();
res.send(investments);
});
router.get("/:id", async(req: Request, res: Response) => {
const investmentRepository = getMongoRepository(Investment);
const investment = await
investmentRepository.findOneById(req.params.id);
if (!investment) {
res.status(404);
res.end();
}
res.send(investment);
});
第二个方法总是返回404。例如,这是在获取所有“investment/”时返回的实体
{
"id": "59dfd8cadcbd9d1720457008",
"name": "Teste LCI",
"startDate": 1466305200,
"numberOfDays": 365,
"type": "LCI_LCA"
}
如果我尝试发送一个请求,请求这个特定的对象调用
投资/59 dfd 8 cadcbd 9d 1720457008
响应总是404。
delete方法也会发生同样的行为,引发异常
找不到要按给定ID删除的实体
我还尝试使用以下命令将字符串转换为ObjectID:
new ObjectID(req.params.id);
但它失败并返回错误ObjectID不是构造函数。
2条答案
按热度按时间gojuced71#
如果你收到错误ObjectId is not a constructor,那是因为你忘记在你的文件中需要它。你所需要的就是:
4smxwvx52#
如果你是从typeorm导入可能发生的情况,你需要用途:
下面是一个例子: