簡體   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