TypeORM FindById不适用于MongoDB

时间:2017-10-13 00:52:42

标签: mongodb express typeorm

我尝试将TypeORM与MongoDB一起使用并表达,但我对基本内容有疑问。

我刚刚为一个实体创建了一个具有基本CRUD操作的控制器。方法save,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。 例如,这是在获得所有"投资/"

时返回的实体
{
    "id": "59dfd8cadcbd9d1720457008",
    "name": "Teste LCI",
    "startDate": 1466305200,
    "numberOfDays": 365,
    "type": "LCI_LCA"
}

如果我尝试发送此特定对象的请求,请致电

  

投资/ 59dfd8cadcbd9d1720457008

响应总是404.

使用delete方法会发生同样的行为,引发异常

  

无法找到要按给定ID移除的实体

我还尝试使用以下方法将字符串转换为ObjectID:

new ObjectID(req.params.id);

但它失败并出现错误ObjectID不是构造函数。

1 个答案:

答案 0 :(得分:3)

如果您收到错误,则ObjectId不是构造函数,因为您忘记在文件中要求它。您所需要的只是:

const ObjectId = require('mongodb').ObjectId;