Ich werde durch die (sehr zufrieden) Sails.js book, die diskutiert ein User-Modell User.js
in Kapitel 6, wie so erstellen:Sails.js nicht Modellschema anwenden, wenn MongoDB mit
module.exports = {
connection: "needaword_postgresql",
migrate: 'drop',
attributes: {
email: {
type: 'string',
email: "true",
unique: 'string'
},
username: {
type: 'string',
unique: 'string'
},
encryptedPassword: {
type: 'string'
},
gravatarURL: {
type: 'string'
},
deleted: {
type: 'boolean'
},
admin: {
type: 'boolean'
},
banned: {
type: 'boolean'
}
},
toJSON: function() {
var modelAttributes = this.toObject();
delete modelAttributes.password;
delete modelAttributes.confirmation;
delete modelAttributes.encryptedPassword;
return modelAttributes;
}
};
Postgres verwenden, ein neuer Rekord richtig füllt die boolesche Felder nicht durch das Login-Formular als null gestellt, wie das Buch sollte der Fall schlägt sein:
Aber ich will MongoDB statt PostgreSQL verwenden. Ich hatte kein Problem, den Adapter zu wechseln. Aber jetzt, wenn ich einen neuen Datensatz erstellen, das Schema in User.js
zu ignorieren scheint, und setzt nur die wörtlichen POST-Daten in die DB:
Ich verstehe, dass MongoDB NoSQL ist und alle Parameter nehmen, aber ich hatte den Eindruck, dass die Verwendung eines Schemas in Users.js
für eine POST-Anfrage an den /user
-Endpunkt (über die Blueprint-Routen vorerst) gelten würde, unabhängig davon, welche Datenbank sich am unteren Ende befand. Muss ich das Modell irgendwie explizit an den Endpunkt für NoSQL-Datenbanken binden?
(Ich habe die Datensätze überprüft, die in Postgres und MongoDB geschaffen, und sie entsprechen den Antworten von localhost: 1337/user oben geschrieben)
Gotcha! Ich könnte ein Problem melden, da es keine unverschlüsselten Passwörter speichern sollte, aber ich bleibe bei SQL für jetzt. Vielen Dank! –
(Obwohl das gesagt, Ch7 des Buches behandelt einige Backend-Validierung, die einige davon löst, so sprach ich vielleicht zu früh. Aber ich denke immer noch das Schema sollte unabhängig von der Datenbank angewendet werden!) –
Auch http: // sailsjs .org/documentation/concepts/models-orm/lifecycle-callbacks könnten einen Blick wert sein, besonders die Callbacks bei create. Sie können sie löschen/verschlüsseln * bevor * sie in der Datenbank gespeichert sind. Außerdem sollten Entscheidungen über Datenbanktypen nicht von dieser Art von Fragen abhängen ... –