26 votes

Comment créer une nouvelle base de données dans mongoose ?

Si j'utilise Mongoose dans node.js, j'ai besoin de faire :

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/myDB');

Mais si je viens tout juste d'installer mongodb et que je n'ai pas de base de données pour le moment ? Comment puis-je créer une nouvelle base de données en utilisant mongoose dans node.js avant de faire mongoose.connect('mongodb://localhost/myDB') ? Ou si une telle myDB n'existe pas, Est-ce qu'il va en créer une nouvelle? ou va-t-il générer une erreur disant qu'il n'existe pas de telle base de données ?

21voto

Abhishek Kumar Points 2940

Il ne devrait pas générer d'erreur. Dès que vous insérez un document dans une nouvelle collection de cette base de données, la collection et la base de données seront créées

0voto

John Travolte Points 5

J'ai trouvé une solution pour moi en essayant de me connecter par mongoose.

!!!Tout d'abord, vous devez spécifier la base de données même si vous souhaitez vous connecter à la base de données par défaut (la base de données par défaut est 'admin') c'est important !!! Avant que je spécifie la base de données /admin mes données se mélangeaient de plusieurs bases de données.

Vous devez spécifier les informations d'identification (comme le nom d'utilisateur et le mot de passe) pour la base de données correcte (dans mon cas admin (Je n'ai jamais créé de base de données admin auparavant, c'est la base de données par défaut)).

Mais que faire si vous voulez vous connecter à une autre base de données? Vous devez utiliser la méthode authSource dans les options de connexion (spécifiez une autre base de données dans l'URI: mongodb://localhost:27017/database):

mongoose.connect(
          mongoUri,
          {
            authSource: 'admin',
            useNewUrlParser: true,
            useUnifiedTopology: true,
            useCreateIndex: true,
            user: config.mongo.username,
            pass: config.mongo.password,
            serverSelectionTimeoutMS: 5000,
          },
          (err) => {
            if (err != null) {
              error('mongoose', err.message);
            } else {
              info('mongoose', 'mongoose connecté');
            }
          },
        )

-2voto

whitebox Points 861

Dans Mongoose, un nouvel enregistrement de base de données est créé lorsque new mongoStore() est invoqué :

  app.use(session({
    resave: false,
    saveUninitialized: true,
    secret: pkg.name,
    store: new mongoStore({
      url: config.db,
      collection : 'sessions'
    })
  }));

ou

const mongoStore = require('connect-mongo')(session);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X