Geben Sie die zurückgegebenen Felder in Node.js / Waterline ein?

8

Ich möchte eine Anfrage stellen wie:

%Vor%

Ich weiß, dass ich toJSON im Modell verwenden kann, aber ich mag diesen Ansatz nicht, da ich manchmal andere Parameter brauche. Zum Beispiel, wenn es der eingeloggte Benutzer ist, werde ich seine E-Mail und andere Parameter zurückgeben. Wenn jedoch die Anforderung für die gleichen Daten von einem anderen Benutzer gestellt wird, würde sie die E-Mail und eine kleinere Teilmenge der Parameter nicht enthalten.

Ich habe auch versucht mit:

%Vor%

Aber kein Glück. Wie kann ich die Felder angeben, die ich zurückgeben muss?

    
Rob 05.06.2014, 19:01
quelle

3 Antworten

12

Also tatsächlich eine seltsame Problemumgehung dafür gefunden. Der Parameter fields param funktioniert so lange, wie Sie andere Parameter mit ihm übergeben, zB limit oder order :

%Vor%

Beachten Sie, dass dies NICHT mit findOne oder einem der singulären wiederkehrenden Typen funktioniert. Dies bedeutet, dass Sie in Ihrem Ergebnis-Callback den Benutzer [1] verwenden müssen.

Natürlich besteht die andere Möglichkeit darin, Ihre Daten auf dem Weg nach draußen zu putzen, was sehr ärgerlich ist, wenn Sie eine große Liste von Elementen verwenden. Wenn das bei großen Listen funktioniert, in denen Sie limit(20) und für einzelne Elemente tatsächlich festlegen können, können Sie die Parameter einfach explizit zurückgeben, bis select() verfügbar ist.

    
Rob 11.06.2014, 18:49
quelle
11

Dies ist ein Update für die Frage, Felder werden nicht mehr in Segel 11 verwendet, bitte benutzen Sie Select anstelle von Feldern.

%Vor%     
jemiloii 22.06.2015 16:57
quelle
5

Waterline unterstützt derzeit keine "Select" -Syntax. Es gibt immer alle Felder für ein Modell zurück. Es ist derzeit in der Entwicklung und könnte es in die nächste Version schaffen, aber Der beste Weg, um das zu tun, was Sie wollen, wäre die Verwendung von Model-Klassen-Methoden, um benutzerdefinierte Finder zu erstellen. Beispielsweise könnte User.findUser(criteria, cb) einen Benutzer finden, der criteria angibt, und dann prüfen, ob es der angemeldete Benutzer war, bevor entschieden wurde, welche Daten im Rückruf zurückgegeben werden sollen.

    
sgress454 06.06.2014 17:58
quelle