Ich benutze Sequelize, um einen DB-Fund für einen Benutzerdatensatz zu machen, und ich möchte das Standardverhalten des Modells nicht geben Sie das password
Feld für diesen Datensatz zurück. Das Feld password
ist ein Hash, aber ich möchte es immer noch nicht zurückgeben.Sequelize: Passwort nicht zurückgeben
Ich habe mehrere Optionen, die funktionieren werden, aber keiner scheint besonders gut:
eine Methode benutzerdefinierte Klasse erstellen
findWithoutPassword
für dasUser
Modell und innerhalb dieser Methode macht einUser.find
mit demattributes
Satz wie in der gezeigt Sequelize docsFühren Sie eine normale
User.find
und filtern die Ergebnisse in der Steuereinheit (nicht bevorzugt)eine andere Bibliothek verwenden, um unerwünschte Eigenschaften
Gibt es eine bessere Art und Weise abzustreifen? Am besten wäre es, wenn es eine Möglichkeit gibt, in der Sequelize-Modelldefinition anzugeben, das Feld password
nie zurückzugeben, aber ich habe keinen Weg gefunden, dies zu tun.
Das ist ein interessanter Ansatz. Würde dies verhindern, dass jemals das Passwort (oder andere Blacklist-Attribute) aus dem Modell entfernt werden? – tyler
EDIT: das ist nicht das Passwort für mich herausfiltern. Sieht so aus, als ob die instanceMethod 'toJSON' nicht für die Rückgabe von' user.get() 'oder' user.dataValues' aufgerufen wird. Sollte ich eine andere Methode verwenden, um Attribute zurückzugeben? – tyler
Sie sollten entweder 'toJSON' aufrufen oder einfach das Benutzerobjekt zurückgeben. Zum Beispiel 'res.send (200, user)' ruft intern 'JSON.stringify' auf dem Benutzerobjekt auf, welches seinerseits' toJSON' aufruft. –