繁体   English   中英

如何在远程服务器(ubuntu)上的node.js中安装并连接到mongodb?

[英]How do I install, and connect to mongodb in node.js on my remote server (ubuntu)?

我花了至少3个小时未能将mongodb连接到我的服务器上。 我已经成功安装它,创建数据库并在控制台中创建了一个新用户:

use admin

然后

db.createUser(
  {
    user: "admin",
    pwd: "xxx",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

一切似乎都很好。 然后,要连接到app.js中的用户,我要做:

var databaseUrl = "mongodb://admin:xxx@108.61.221.63:27018/mydatabasename";
var db = require("mongodb").connect(databaseUrl);

在这一点上,当我运行服务器(npm start)时,这就是我得到的:

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
/home/adminftp/public_html/globular/node_modules/mongodb/lib/mongo_client.js:92
    throw new Error("no callback function provided");
          ^
Error: no callback function provided
    at Function.MongoClient.connect (/home/adminftp/public_html/globular/node_modules/mongodb/lib/mongo_client.js:92:11)
    at Object.<anonymous> (/home/adminftp/public_html/globular/app.js:31:29)
    at Module._compile (module.js:462:26)
    at Object.Module._extensions..js (module.js:480:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:503:10)
    at startup (node.js:132:16)
    at node.js:817:3

...我不知道该怎么做。

如果有人有任何想法我可以解决它,我将不胜感激。 谢谢!

查看文档( 1.x docsv2.x docs ),connect函数不会返回db对象,它使用回调函数作为参数。 该函数将以db作为其第二个参数来调用。

这与您收到的“未提供回调函数”错误相匹配。

因此,根据文档中的示例,您可以尝试:

var MongoClient = require('mongodb').MongoClient;
var databaseUrl = "mongodb://admin:xxx@108.61.221.63:27018/mydatabasename";

MongoClient.connect(databaseUrl, function(err, db) {
    if (err) {
        // do something with the error
    }

    // do something with the db 
});

也就是说,查看驱动程序的源代码,我认为connect方法也直接是require所返回内容的别名,因此在您的示例中,您可以使用:

require('mongodb').connect(databaseUrl, function(err, db) { 
   ...
});

但是我建议遵循文档中的示例。

正如其他帖子所指出的那样,在mongodb周围还有其他包装器。 猫鼬非常好,得到很好的支持。

暂无
暂无

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

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