2017-03-17 80 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访问权限,或者您在该数据库角色中需要的任何访问权限。