为什么nodejs没有连接mongo?

时间:2017-03-17 10:21:17

标签: javascript node.js mongodb

我在节点中有这个代码:

"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并检索给用户ID的用户名,并让getUsername管理连接和断开连接。

编辑>

我解决了它,只是因为我正在以一种糟糕的方式调用与mongo的连接,我正在使用:     MongoClient.connect(mongoURL //无论如何 代替      MongoClient.connect(this.mongoURL //无论

1 个答案:

答案 0 :(得分: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访问权限或您在该数据库的角色中需要的任何访问权限。