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