2017-05-25 4 views
1

Guten Tag Jungs. Ich habe daran gearbeitet, eine kleine Kontaktlisten-App zu erstellen, und ich wollte Mungo zum Speichern von Daten und Session-Elementen verwenden. Ich habe noch nie Mungo benutzt, also habe ich ein kurzes PDF mitgenommen. Meistens macht das Sinn, und ich konnte einiges zusammenfügen und die Authentifizierung ausführen, um neue Benutzer mit einer UserSchema hinzuzufügen. Funktioniert super. Woran ich jetzt ein wenig verloren bin ist, wie kann ich Mungo verwenden, um ein zweites Schema namens ContactSchema zu erstellen. Ich dachte, ich würde 2 verschiedene Dateien für jedes Schema (user.js und contact.js) erstellen, aber wenn ich das versuche, sehe ich immer noch keine Kontaktsammlung, wenn ich show collections in meinem Mongo-Terminal ausführen und ich auch nicht werfen Sie irgendwelche Fehler. Es ist auch dasselbe, wenn ich in robomongo nach ihm suche.Mongoose: Erstellen Sie ein Benutzerschema und Todo Schema

Mein Server-Datei ruft die alle meine Modelle wie folgt aus:

require('./server/models').connect(config.dbUri); 
// config.dbUri -> "dbUri": "mongodb://localhost/react_app" 

Meine user.js Datei:

const mongoose = require('mongoose'); 
const bcrypt = require('bcrypt'); 

// define the User model schema 
const UserSchema = new mongoose.Schema({ 
    email: { 
    type: String, 
    index: { unique: true } 
    }, 
    password: String, 
    name: String 
}); 

...bcrypt code here 

module.exports = mongoose.model('User', UserSchema); 

Meine contact.js Datei:

const mongoose = require('mongoose'); 

// define the Contact model schema 
const ContactSchema = new mongoose.Schema({ 
    content : String, 
    updated_at : Date 
}); 

module.exports = mongoose.model('Todo', ContactSchema); 

Mein Index .js-Datei, um die Schemas user.js und contact.js zu benötigen:

const mongoose = require('mongoose'); 

module.exports.connect = (uri) => { 
    mongoose.connect(uri); 

    // plug in the promise library 
    mongoose.Promise = global.Promise; 

    mongoose.connection.on('error', (err) => { 
    console.error(`Mongoose connection error: ${err}`); 
    process.exit(1); 
    }); 

    require('./user'); 
    require('./contact'); 
}; 

Die Dateien index.js, user.js und contact.js befinden sich alle in meinem Modellordner. Ich kann das ohne Fehler in der Konsole ausführen, aber ich sehe immer noch nicht die Kontaktsammlung auf der Mongo-Seite. Bin ich hier richtig? Wie immer werden Hilfe oder verwandte Beiträge sehr geschätzt. Um eine bessere Idee zu bekommen, hier ist der GitHub Link zum vollständigen Projekt: https://github.com/DanDeller/Base. Danke nochmal Jungs.

Antwort

3

Haben Sie bereits Daten zur Kontaktsammlung hinzugefügt?

Mongoose ist ein "ORM", das abstrakte Schemas bereitstellt, die MongoDB-Sammlungen zuordnen. Diese Schemas existieren jedoch nur im Kontext der Anwendung, die Mungo verwendet. MongoDB hat kein Konzept von Schemas. Es ist ein ziemlich dummer Dokumentspeicher. Es ist nicht wie bei SQL, wo das Definieren von Objekten in Ihrem ORM normalerweise eine physische Tabelle in der Datenbank erstellt. Die Schemas, die Mungo bietet, sind rein abstrakt und werden nur auf Anwendungsebene durchgesetzt.

Bis Sie Ihrer Anwendung mitteilen, dass sie einen Datensatz basierend auf Ihrem Kontaktschema erstellen und Mungo anweisen soll, ihn im Geschäft zu speichern, wird mongo keine Ahnung von einem Kontakt haben.

+0

Danke für den Tipp @fluoresce. Das macht Sinn. Ich werde versuchen, ein paar Artikel hinzuzufügen und zu sehen, was ich mir vorstellen kann. –