2017-10-13 3 views
1

Ich versuche, TypeORM mit MongoDB zu verwenden und auszudrücken, aber ich habe Probleme mit den grundlegenden Sachen.TypeORM FindById funktioniert nicht mit MongoDB

Ich habe gerade einen Controller mit grundlegenden CRUD-Operationen für eine Entität erstellt. Die Methoden save, findAll und find by Filter funktionieren ok, aber ich kann nicht die Methoden machen, die eine mongo-ID benötigen.

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

Die zweite Methode immer 404. Zum Beispiel zurückkehrt, ist dies ein Unternehmen auf alle „Investitionen /“ get zurück

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

Wenn ich versuche, eine Anfrage für diese spezifische Aufgabe Berufung zu senden

Investition/59dfd8cadcbd9d1720457008

immer 363.210

ist die Antwort 404.

Das gleiche Verhalten mit dem Löschverfahren geschehen, eine Ausnahme Anhebung

nicht Entität gefunden von einem bestimmten ID

Ich habe auch versucht zu entfernen, zu konvertieren die Zeichenfolge zu ObjectID mit:

aber es schlägt mit dem Fehler ObjectID ist kein Konstruktor.

Antwort

2

Wenn Sie den Fehler erhalten ObjectId ist kein Konstruktor, weil Sie vergessen haben, es in Ihrer Datei zu benötigen. Alles, was Sie brauchen, ist:

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

Danke, ich könnte es schaffen zu importieren mongodb. 'import * als mongodb von "mongodb";' ' neue mongodb.ObjectId (req.params.id);' Ich weiß, don 't, warum nicht funktioniert ObjectID aus typeorm Paket. –

+0

Weil es nur 'deklariert abstrakte Klasse' für Typings, nicht zum Zweck der Laufzeit. In der neuen Version werden Sie in der Lage sein, durch die ID zu finden, die Hex-Zeichenfolge ist. –

Verwandte Themen