SailsJS best-practice-Saatgut-Datenbank mit Daten vor anderen Modelle sind initialisiert
Es ist ein Modell, das alle anderen Modelle davon ausgehen, dass seine Existenz.
Es muss initialisiert werden, bevor Sie eine API-Funktion aufgerufen wird.
Die Art, wie ich dies tun (es funktioniert nicht):
1) Definieren, Modell-api/Modelle, nennen wir es Location.js
2) Fügen Sie die folgenden bootstrap.js
var Locations = require('../api/models/Locations.js');
module.exports.bootstrap = function (cb) {
//seed the database with Locations
var locationsObj = {
country: 'Australia',
states: ['Brisbane', 'Perth', 'Sydney']
};
Location.create(locationsObj, function locationsObj(err, locations) {
if (err) {
cb(err);
}
console.log('locations created: ', locations);
});
}
Frage 1
Ist es der richtige Weg ist, um initial seeding der Datenbank?
Bekomme ich diesen Fehler:
Locations.create(locationsObj, function locationsObj(err, locations) {
^
TypeError: Object #<bject> has no method 'create'
Frage 2
Wie funktioniert die cb Funktion von bootstrap zu arbeiten?
was ist, wenn es als Fehler, was ist zu tun?
- 1) Siehe Antwort von @Nizar. 2) Wenn es ein Fehler ist, übergeben Sie Sie als argument an
cb
, die Stoppt, Segel anheben. 3) Bitte nicht zwei Fragen in einem ALSO post!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Segeln Modelle, sind Global verfügbar, so dass Sie nicht brauchen, um zu fordern bootstrap.js.
Dies ist, was ich verwenden, um Samen meiner Datenbank. (Siehe die links, die ich beilegen, um zu gehen, um die Gist)
Umfassen Saatgut Funktion an config/models.js. Die Methoden, die Sie erklären, in diese Datei wird erweitert, um alle Ihre Modelle.
Link: Samen Methode gist
Definieren de Daten die Samen verbrauchen in Ihrem Modell Link: Modell der seed-Daten
Rufen Sie die seed-Methode in config/bootstrap.js mit async. Link: Aufruf der Methode
UPDATE
Haben Sie einen Blick auf diese Bedrohung auch: Beste Weg zu migrieren-Tabelle geändert, um die Produktion sailsjs Tabellen
Vom Kann nicht unit-testen, mein Modell in sailsjs:
"Sobald die Segel-app aufgehoben wird, haben Sie Ihre Modelle automatisch...
- Und in Ihrem Fall, die erste Zeile überschreibt die Benutzer-Modell, das wäre sonst gebaut Sails.js, das ist, warum, obwohl Sie über ein Objekt verfügen, ist es nicht ein Waterline-Modell".
Ich weiß, das ist alt, aber der Vollständigkeit halber:
Legen Sie
Aber aber Sie rufen
(ohne 's'), so dass Sie nur ein Tippfehler.