2017-03-17 63 views
0

我有這樣的代碼在節點:爲什麼nodejs沒有連接mongo?

"use strict" 
var MongoClient = require('mongodb').MongoClient; 

var UserGateway = function(mongoURL) { 
    this.mongoURL = mongoURL; 
} 

UserGateway.prototype.connect = function() { 
    return new Promise((resolve, reject)=>{ 
     MongoClient.connect(mongoURL, function(err, db) { 
     if(err) { 
      reject(err); 
     } 
     resolve(db); 
    }); 
}); 
} 

UserGateway.prototype.getUsername = function(_userId) { 
    return new Promise((resolve, reject)=>{ 
     connect().then((db) => { 

     let user = db.collection('user').findOne({"_id":_userId}); 
     disconnect(); 
     resolve(user); 
    }); 
    }); 
} 

UserGateway.prototype.disconnect = function() { 
    return new Promise((resolve, reject) => { 
    MongoClient.close(function(err, db) { 
     if(err) { 
     reject(err) 
     } 
     resolve(db) 
    }) 
}) 
} 

module.exports = UserGateway; 

和我一起執行:

var UserGateway = require("./src/userGateway.js") 

var userGT = new UserGateway("mongodb://localhost:27017/UserSports") 
userGT.getUsername(1).then(userName => { 
    console.log(userName) 
}) 

任何人有一個想法,其中的錯誤是什麼?我一直在js編程這麼少。 我的想法是連接到mongo並獲取用戶名的用戶名,並讓getUsername管理連接和斷開連接。

編輯>

我解決了它,它只是我在呼喚一個壞的方式來蒙戈的連接,我用: MongoClient.connect(mongoURL //任何相反MongoClient.connect的 (this.mongoURL // whatever

+4

你能顯示你得到的錯誤嗎?編寫問題的詳細信息以更快獲得幫助,並幫助其他人解決同樣的問題,以便使用您的問題! –

+0

執行代碼沒有收到錯誤,它只是不連接到mongo而什麼都不做:( – Erinel

回答

0

該代碼本身可能不是問題根據您的評論以上: 「執行代碼沒有得到一個錯誤,它根本不連接到mongo並且什麼都不做:(- 「

我將承擔隱藏的問題就在這裏:

this.mongoURL = mongoURL;

可能是你mongoURL變量是不正確的。

的mongoURL需要如下(假設角色創建和用戶名和PW):

MongoDBurl_prefix + User_name + ':' + Password + url_ip + MongoDBport + MongoDBname;

檢查您的mongoURL是否正確配製,提供所需的參數並連接。

如果您還沒有用戶名&密碼的具體作用(不是一個好主意),然後訪問將作如下簡單:

MongoDBurl_prefix + url_ip + MongoDBport + MongoDBname;

還有一個問題可能導致它失敗。您正在使用的用戶角色沒有readWrite訪問權限,或者您在該數據庫角色中需要的任何訪問權限。

相關問題