2015-07-04 8 views
7

Ich habe ein Modell mit einer Reihe von Eigenschaften. Eines davon ist ein Feld namens "developerId", das eine Zeichenfolge enthält, die die gleiche Länge und die gleichen Merkmale wie eine MongoDB ObjectId aufweist (tatsächlich handelt es sich um eine stringifizierte ObjectId). Wenn ich das Modell mit der Methode find() in Node.js abfrage, wird die Abfrage aktualisiert, bevor sie ausgeführt wird, und der Wert "developerId" wird in eine ObjectId konvertiert, die dann nicht mit allen Zeichenfolgen in der Datenbank übereinstimmt sind Strings, keine ObjectIds.Loopback MongoDB-String-Eigenschaft in ObjectId konvertiert, wenn die Klausel "Finde nach" verwendet wird

{where: {developerId: '55118c5fc921fa170f05080b'}} 

zu umgewandelt wird: 'string' im Modell json Definition:

{where: {developerId: ObjectId('55118c5fc921fa170f05080b')}} 

Das Feld kein ID-Feld ist, wird als Typ angegeben.

Wie kann ich das Verhalten der Auto-Objekt-ID ausschalten, damit ich die Loopback-Abfragen steuern kann?

Antwort

4

Sieht aus, als hätten Sie einen Fehler/Fehler des Frameworks entdeckt. Siehe hier:

https://github.com/strongloop/loopback-connector-mongodb/issues/52

Der Fehler scheint immer noch vor wie von zwei Monaten ungelöst zu sein. Willkommen im wilden Westen, der Knotenentwicklung sein kann.

Sie könnten das Modul kurzzeitig austauschen und hacken, während Sie mit der Community arbeiten, um dieses Problem zu lösen.

Sie könnten auch versuchen, die zugrunde liegende Mongo-Verbindung zu verwenden, um die Abfrage durchzuführen und diese dann Ihren Loopback-Objekten zuzuordnen. Sie können, dass wie so erhalten:

app.models.User.dataSource.connector 

Ich nehme an, Sie können immer das Feld developerId ändern Sie Ihr Modell ein tatsächliches ObjectId zu sein.

0

stellen Sie sicher in Ihren Json-Datei developerId Eigenschaften definiert als Objekt Beispiel:

"Properties" { 
... 
    "developerId": { 
     "type": { 
     "required": true 
     } 
    } 
... 
} 
+1

Vielen Dank für die Beantwortung, aber ich glaube nicht, dass Sie das Problem zu verstehen. Das Feld wurde bereits im Modell definiert. Das Problem betrifft die automatische Konvertierung von String in ObjectId, die in diesem Fall unerwünscht ist. –

Verwandte Themen