【问题标题】:MongoDB as a variable in Node.jsMongoDB 作为 Node.js 中的变量
【发布时间】:2016-05-05 05:30:20
【问题描述】:

我正在尝试在服务器端登录并更新我的 mongo 数据库,但遇到了问题。我在 Heroku 上运行,所以我想可能是我没有以用户身份登录。我从node login repo 开始,但已经更改了一些内容以使其在 heroku 上运行。我尝试像这样作为变量登录:

var MongoDB     = require('mongodb').Db;
var Server      = require('mongodb').Server;    
var db = new MongoDB(dbName, new Server(dbHost, dbPort, {auto_reconnect: true}), {w: 1}); 

当我尝试注册用户时,我在 heroku 日志中看到一条回复为 400 而不是 200 ok 的帖子,这让我觉得我没有进入数据库。我已将我的 dbName、dbHost 和 dbPort 设置为 mongolab 值,但我不确定在哪里登录用户帐户。我使用 URI 创建了一个会话

new MongoStore({ url: 'mongodb://username:password@host:port/database' })

在我添加用户名和密码之前它不起作用,这让我认为这就是我在变量中所缺少的。那么如何在 db 变量中添加用户名和密码呢?

【问题讨论】:

  • Heroku 内置了 mLab 支持,可以轻松地从您的应用程序创建和连接到 MongoDB。它确实需要存档的信用卡,但您可以免费选择免费计划。这会有所帮助还是您需要连接到 a 特定的托管数据库?
  • 我正在使用 mLab,是的,并在会话中连接了第二个代码片段。他们展示了如何connect with Ruby here,但我不确定如何用 js 复制它

标签: node.js mongodb heroku


【解决方案1】:

您可以利用 'mongodb' 库的 MongoClient 对象,并在连接函数中提供 auth url 作为参数

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://username:password@host:port/database';
MongoClient.connect(url, function(err, db) {
 assert.equal(null, err);
 console.log("Connected correctly to server.");
});

【讨论】:

  • 我当时正在为一个集合调用一个变量 var accounts = db.collection('accounts');那么我可以用'MongoClient'切换'db'吗?
  • 你可以使用'MongoClient'切换到另一个数据库这里是已经提出的问题link的参考
  • 嗯,它并没有真正访问另一个数据库。基本上我正在尝试访问集合和导出函数like this,这似乎是节点的旧驱动程序。是否有使用新驱动程序执行此操作的正确方法的示例?到目前为止我还没有找到。
猜你喜欢
  • 2016-09-12
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 2016-12-16
  • 1970-01-01
  • 2020-06-11
  • 2011-11-27
相关资源
最近更新 更多