我在节点中有这个代码:
"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 //无论
答案 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访问权限或您在该数据库的角色中需要的任何访问权限。