繁体   English   中英

Mongoose.connect() 在连接字符串中指定数据库时失败

[英]Mongoose.connect() fails when database is specified in connection string

我正在运行本地 MongoDB 服务器,并尝试使用 Mongoose 库从 node.js 服务器连接到它。

我使用 SCRAM-SHA-1 作为身份验证机制

当我没有指定要连接的数据库时,我可以使用管理员帐户连接到它,使用连接字符串,例如:

mongodb://{username}:{password}@{address}:{port}?authMechanism=SCRAM-SHA-256

但是当我尝试指定要连接到哪个数据库时,使用连接字符串,例如:

mongodb://{username}:{password}@{address}:{port}/database123?authMechanism=SCRAM-SHA-256

认证失败。

作为参考,我的代码如下所示:

    const mongoose = require('mongoose');

    let conn_string = `mongodb://mongo_uname:mongo_pass@192.168.1.1:3000/database123?authMechanism=SCRAM-SHA-256`

    mongoose
    .connect(database_uri, {
        useUnifiedTopology: true
    })
    .then(() => console.log('MongoDB database Connected...'))
    .catch((err) => console.log(err))

是否有不同的方法来指定使用 mongoose 连接到哪个数据库,或者在构造连接字符串以使其工作时我可以做一些不同的事情?

干杯。

确保您正在使用的数据库用户配置为读取和写入您尝试连接的数据库。

import mongoose from "mongoose";

const mongoDB = "mongodb://localhost:27017/twlight";
mongoose.Promise = global.Promise;

mongoose.connect(mongoDB, { useNewUrlParser: true })
.then(() => {
  console.log("Database is connected");
},
(err) => {
console.log("There is problem while connecting database " + err);
});

请试试

注意:twilight 是数据库名称

如果您使用的是 Mongoose v6+,则不应指定useUnifiedTopology

这已被弃用,如果包含它,Mongoose 将抛出错误。 尝试仅包含连接字符串:

mongoose.connect(database_uri)

我的错误最终出现在我尝试连接的数据库用户的配置中,他们甚至没有设置为读取或写入我尝试连接的数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM