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?
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
:
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.
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.