【问题标题】:How to create a new db in mongoose?如何在猫鼬中创建一个新的数据库?
【发布时间】:2013-05-03 18:46:06
【问题描述】:

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

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

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

【问题讨论】:

  • 我看到有 API createNewDB(...) 吗?不。如何在 node.js 中使用 mongoose 创建新数据库?

标签: node.js mongodb mongoose database


【解决方案1】:

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

【讨论】:

  • 那么指定的 URL 是否仅用于解析 mongodb 服务器的 URL 和 DB 名称?为什么不单独做呢?
  • 这个 URL/mongoURI 不仅提供服务,指定服务器名称,还指定许多其他内容。看看这个:docs.mongodb.org/manual/reference/connection-string。此外,您必须检查您的客户端驱动程序是否支持所有驱动程序。此外,我猜测您可以单独执行,而不是将 dbName 传递给 mongoURI。至少在 java-driver 中,我们肯定可以做到。
【解决方案2】:

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

【讨论】:

  • 这个答案似乎是针对express 的,也不能很好地回答这个问题。
【解决方案3】:

我在尝试通过 mongoose 连接时为我找到了解决方案。

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

您需要为正确的数据库指定凭据(作为用户名和密码)(在我的情况下为 admin(我之前从未创建过 admin 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');
            }
          },
        )

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2019-09-12
    • 2015-10-14
    • 2021-12-31
    • 2017-01-24
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多