[英]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 docs或v2.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.