如何在mongoose中创建一个新的数据库?

时间:2013-05-09 10:09:23

标签: node.js mongodb mongoose database

如果我在node.js中使用Mongoose,我需要这样做:

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

但是如果我刚刚安装了mongodb并且我目前没有任何数据库怎么办?在执行mongoose.connect('mongodb://localhost/myDB')之前,如何在node.js中使用mongoose创建新数据库?或者如果没有这样的myDB那么它会创建一个新的吗?或者会抛出没有这样一个DB的错误?

3 个答案:

答案 0 :(得分:19)

不应该抛出任何错误。当您在该数据库的任何新集合中插入文档时,将创建集合和数据库

答案 1 :(得分:0)

在Mongoose中,调用new mongoStore()时会创建一个新的数据库记录:

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

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

答案 2 :(得分:0)

我在尝试通过猫鼬连接时找到了一个解决方案。

!!!首先你需要指定数据库,即使你想连接到默认数据库(默认数据库是'admin')这很重要!!! 在我指定 /admin db 之前,我的数据是从几个 db 混合而来的。

您需要为正确的数据库指定凭据(如用户名和密码)(在我的情况下为 admin(我之前从未创建过 admin db,它是默认的 db))。

但是如果你想连接到另一个数据库怎么办?你应该在连接选项中感觉到authSource方法(在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 connected');
            }
          },
        )