2017-05-25 5 views
1

Bonjour les gars. J'ai travaillé sur la construction d'une petite application de liste de contacts et je voulais utiliser mongoose pour stocker des données et des éléments de session. Je n'ai jamais utilisé de mangouste auparavant, alors j'ai pris un PDF rapide à suivre. La plupart de si est logique et j'ai été en mesure de rassembler des choses ensemble et obtenir l'authentification en cours d'exécution pour ajouter de nouveaux utilisateurs en utilisant un UserSchema. Fonctionne très bien. Ce que je suis un peu perdu maintenant, c'est comment puis-je utiliser mongoose pour créer un second schéma appelé ContactSchema. Je pensais que je créerais 2 fichiers différents pour chaque schéma (user.js et contact.js), mais quand j'essaye, je ne vois toujours pas de collection de contacts quand je cours show collections dans mon terminal mongo et je ne le fais pas jeter des erreurs. C'est aussi pareil quand je le vérifie dans Robomongo.Mongoose: Créer un schéma utilisateur et un schéma Todo

Mon fichier serveur appelle les tous mes modèles comme ceci:

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

Mon fichier user.js:

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); 

Mon fichier contact.js:

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); 

Mon index Le fichier .js nécessite les schémas user.js et contact.js:

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'); 
}; 

Les fichiers index.js, user.js et contact.js se trouvent tous à l'intérieur de mon dossier de modèles. Je peux obtenir ceci pour exécuter sans erreurs dans la console, mais je ne vois toujours pas la collection de contact du côté de mongo. Suis-je sur la bonne voie ici? Comme toujours, toute aide ou messages connexes sont grandement appréciés. Pour avoir une meilleure idée, voici le lien github vers le projet complet: https://github.com/DanDeller/Base. Merci encore les gars.

Répondre

3

Avez-vous ajouté des informations dans la collection de contacts?

Mongoose est une sorte de 'ORM' qui fournit des schémas abstraits qui correspondent aux collections MongoDB. Cependant, ces schémas existent uniquement dans le contexte de l'application qui utilise mongoose. MongoDB n'a aucun concept de schémas. C'est un magasin de documents assez dum. Ce n'est pas comme SQL, où définir quelque chose dans votre ORM crée généralement une table physique dans la base de données. Les schémas mongoose fournis sont purement abstraits et ne sont appliqués qu'au niveau de l'application. Jusqu'à ce que vous demandiez à votre application de créer un enregistrement basé sur votre schéma de contact et que vous lui demandiez de persister dans le magasin, mongo n'aura aucune idée d'un contact.

+0

Merci pour l'astuce @fluoresce. Ça a du sens. Je vais essayer d'ajouter quelques éléments et voir ce que je peux trouver. –