【问题标题】:How to connect with username/password to mongodb using native node.js driver如何使用本机 node.js 驱动程序将用户名/密码连接到 mongodb
【发布时间】:2013-04-14 00:08:28
【问题描述】:

我在 Joyent 云中使用本机 mongo 驱动程序,node.js 应用程序在本地运行良好,但在 Joyent 中,当我使用他们提供的用户名/密码运行时无法连接。

这是我用来连接的代码:

var db = new MongoDB(dbName, new Server('localhost', 27017 , {auto_reconnect: true}), {w: 1});
db.open(function(e, db){
if (e) {
    console.log(e);
} else{
    console.log('connected to database :: ' + dbName);
    //db.admin().authenticate('admin', '+(uihghjk', function(de , db){
    // if(e){
    //     console.log("could not authenticate");
    // }else {
    //console.log('connected to database :: ' + dbName);
    // }
    // });
}
});

是什么阻止我成功连接?

【问题讨论】:

  • 上述注释代码适用于身份验证。问题是它们与为 mongodb 提供的凭据混在一起,以验证登录名和密码,ssh 到 Joyent 并输入 $(mdata-get mongodb_pw),验证给定的 pswd 在“mongo -uadmin -p$(mdata-get mongodb_pw) 中工作”管理员”

标签: node.js node-mongodb-native joyent


【解决方案1】:

如果你只使用 MongoClient 会更容易

MongoClient.connect('mongodb://admin:password@localhost:27017/db', function (err, db) {

【讨论】:

  • 这是非常正确的,但是我怎样才能从存储库中隐藏凭据呢?有没有办法使用哈希键或类似的东西?
  • @Mavro 在一个带有 mongoose 的项目中我看到整个路径的凭据存储在一个配置文件中,该文件未提交到存储库,然后在连接中使用变量。
【解决方案2】:

标准 URI 连接方案是:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

例如:

mongodb://admin:pass@abc.com/

参考:https://docs.mongodb.com/manual/reference/connection-string/

【讨论】:

    【解决方案3】:

    工作代码是这样的

    const MongoClient = require('mongodb').MongoClient;
    const uri = "mongodb+srv://<username>:<password>@cluster0-saugt.mongodb.net/test?retryWrites=true&w=majority";
    const client = new MongoClient(uri, { useNewUrlParser: true });
    client.connect(err => {
        // creating collection
        const collection = client.db("test").collection("devices");
        // perform actions on the collection object
        client.close();
    });
    

    【讨论】:

      【解决方案4】:

      在 URL 中的 // 之后使用 &lt;username&gt; : &lt;password&gt;

      我正在使用 Mongoose 进行连接,我的用户名和密码是 admin admin

      mongodb+srv://admin:admin@cluster0.c1xrp
      

      这对我有用。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-09
      • 2018-05-24
      • 1970-01-01
      • 2011-04-11
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多