2017-10-13 7 views
1

MongoDBでTypeORMを使用して表現しようとしていますが、基本的な問題に問題があります。TypeORM FindByIdが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); 
}); 

第2の方法は、常に例えば404 を返している私は、この特定のオブジェクトの呼び出しのための要求を送信しようとすると、これが得るすべての「投資/」

{ 
    "id": "59dfd8cadcbd9d1720457008", 
    "name": "Teste LCI", 
    "startDate": 1466305200, 
    "numberOfDays": 365, 
    "type": "LCI_LCA" 
} 

にエンティティが返されます

投資/ 59dfd8cadcbd9d1720457008

応答は常に404同じ動作が例外

を上げ、deleteメソッドで発生

私も変換しようとした特定のidで削除するエンティティを見つけることができません使用してオブジェクトIDの文字列は:

new ObjectID(req.params.id); 

が、それは誤りのObjectIDで失敗コンストラクタではありません。

答えて

2

エラーが発生した場合、ObjectIdはコンストラクタではありません。これは、ファイルに要求していないためです。あなたが必要とするのは:

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

ありがとう、私はmongodbをインポートすることができます。 "MongoDBの" からMongoDBのように 'インポート*;' '新しいmongodb.ObjectId(req.params.id);' 私はtypeormパッケージdoesntの仕事から、なぜオブジェクトIDを知っている 'tを。 –

+0

これは実行時の目的ではなく、型定義用の 'abstract class'を宣言しているためです。 新しいリリースでは、IDによって16進文字列を見つけることができます。 –

関連する問題