Javascript 使用nodejs连接到远程mongodb

Javascript 使用nodejs连接到远程mongodb,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我有一个远程mongo服务器,我想用nodejs连接到它。我试着直接与mongo shell连接,一切正常。。。但是我无法连接到nodejs中的mongodb服务器。。 用于连接的mongo命令: mongo——主机192.168.10.33——端口27017-u mohammad-p”mypassw@12“--authenticationDatabase=access 我只想将该命令转换为nodejs连接配置。。 比如: uri=mongodb://mohammad:mypassw@12@19

我有一个远程mongo服务器,我想用nodejs连接到它。我试着直接与mongo shell连接,一切正常。。。但是我无法连接到nodejs中的mongodb服务器。。 用于连接的mongo命令:

mongo——主机192.168.10.33——端口27017-u mohammad-p”mypassw@12“--authenticationDatabase=access

我只想将该命令转换为nodejs连接配置。。 比如:


uri=mongodb://mohammad:mypassw@12@192.168.10.33:27017/“

我想问题可能在于您的密码,它似乎包含mongodb驱动程序用于将凭据与主机分离的特殊字符:

mongodb://[username:password@]host1[:port1][,…hostN[:portN][/[defaultauthdb][?选项]]

如果密码中有@,则必须通过添加%字符来应用@


下面是要根据以下内容进行编码的字符列表::/?#[]@

应该对URI进行编码

uri = "mongodb://mohammad:mypassw%4012@192.168.10.33:27017/access"

mongo.connect(uri, { useNewUrlParser: true }, (err, db) => {});

连接到远程Mongo有时会很棘手,mongoose在连接到您的远程数据库方面会有很大帮助。下面的代码应该能够完成这个技巧并连接

const mongoose = require('mongoose');
mongoose.set('useFindAndModify', false);
const uri = "mongodb+srv://user:pass@clusterName.d4zrk.mongodb.net/databaseName?retryWrites=true&w=majority";

mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true })

const db = mongoose.connection

db.on('error', (err) => {
    console.log(err)
})
db.once('open', () => {
    console.log('Database Connection Established!')
})

我第一次使用mongodb atlas时遇到了同样的问题。这是密码。在URI中,您的密码不应包含特殊字符。更改密码是我的解决方案。

这是mongodb文档:您需要在最后使用
访问
数据库,否则它将再次验证
管理员
并出错。我尝试了这一点,然后上面写着
未处理PromiserEjectionWarning:MongoError:Authentication failed
,我也尝试了```..:27017/access和….:27017/mydbname```但它们都不起作用可能是密码问题。用%40替换@还不够吗?我是js新手,可以使用简单字符串的%40编码吗?比如“mypassw%4012”“我试过吼叫,url,但仍然不起作用..
url=”mongodb://mohammad:mypassw%4012@192.168.10.33:27017/mydbname“