2016-12-14 3 views
1

Ich bin bei der Entwicklung einer node.js-Anwendung stecken. Ich versuche, eine Tonleiter zu modellieren, die einen Namen und eine Reihe von zugehörigen Noten hat:Grundlegende Modellierung in Node.js + Mongoose

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var scaleSchema = new Schema({ 
    name: String, 
    displayName: String, 
    notes: [{type: String}] 
}); 

module.exports = mongoose.model('Scale', scaleSchema); 

aber ich weiß nicht, wie man „Samen“ oder auch dieses Modell zugreifen. Ich möchte es mit einigen Skalen füllen, die nur einmal geladen werden. Ich weiß, dass ich dieses Modell verlangen kann und new benutze, um neue Einträge zu machen, aber gibt es einen spezifischen Teil der Knotenanwendung, in die ich mich setzen muss? Gibt es eine bestimmte Best Practice? Mache ich das falsch?

Ich bin ziemlich verwirrt hier, aber fühle mich, als ob ich fast begreifen, wie es funktioniert. Kann mir jemand in die richtige Richtung zeigen?

Antwort

2

Sie können neue Datenbankeinträge erstellen, wie Sie Objekte erstellen. Hier ist eine Seeder-Klasse als Beispiel.

let mongoose = require('mongoose'), 
    User = require('../models/User'); 

    module.exports =() => { 

    User.find({}).exec((err, users) => { 
     if (err) { 
      console.log(err); 
     } else { 
      if (users.length == 0) { 
       let adminUser = new User(); 
       adminUser.username = 'admin'; 
       adminUser.password = adminUser.encryptPassword('admin'); 
       adminUser.roles = ['Admin']; 
       adminUser.save(); 

       console.log('users collection seeded') 
      } 
     } 
    }); 
}; 

dann in einer anderen Datei können Sie es nennen, und es wird Ihre db Saatgut.

let usersCollectionSeeder = require('./usersCollectionSeeder');  
usersCollectionSeeder(); 

Hoffe, das hilft.

Als Struktur habe ich gerne einen Ordner namens "Seeders". Dort habe ich eine Datei namens databaseSeeder.js, die alle anderen Seeder wie usersCollectionSeeder.js benötigt und dann die Funktionen aufruft.

Hier ist eine Beispielstruktur, die ich gerne benutze.

https://github.com/NikolayKolibarov/ExpressJS-Development

0

Vielleicht möchten Sie in .create() a mongoose function suchen.

Ich bin mir nicht sicher, ob dies der einzige Weg ist, es zu tun, aber man könnte so etwas wie

var Scale = mongoose.model("Scale", scaleSchema); 
module.exports = Scale; //instead of what you currently have for you last line 

Dann können Sie so etwas wie

Scale.create({name: varThatHasValName, 
      displayName: varThatHasValdisplayName, 
      notes: varThatHasValnotes}, function (err,scale)); 

In einem anderen Teil tun hinzufügen möchten Ihres Codes, wenn Sie eine neue Skala erstellen möchten.

Ich habe kürzlich Knoten und Mungo für eine Klasse verwendet, aber ich bin kein Experte, aber das ist wahrscheinlich, was ich tun würde (wenn ich Ihre Frage verstehe).

Verwandte Themen