Mongo db Atlas 3.6.5 身份验证失败



我对node.js很陌生,正在尝试使用猫鼬将数据写入免费的在线mongo db atlas,但是尽管编辑mongo db设置以从任何地方连接并且还为数据库用户使用正确的用户名和密码,但我仍然遇到身份验证失败。

这是我的应用程序.js 我连接到 mongo db 的文件 应用.js:

const express = require('express');
const morgan = require('morgan');
const bodyParser= require('body-parser');
const mongoose = require('mongoose');
const app = express();
const productRoutes= require('./api/routes/products');
const ordersRoutes= require('./api/routes/orders');
mongoose.connect('mongodb+srv://hilary:'+process.env.MONGO_ATLAS_PW+'@node-rest-dnqwa.mongodb.net/test?retryWrites=true').catch(err => console.log(err));
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
app.use((req,res,next) =>{
res.header("Access-Control-Allow-Origin","*");
res.header('Access-Control-Allow-Headers','Origin,X-Requested-With,Content-Type,Accept,Authorization');
if(req.method === 'OPTIONS'){
res.header('Access-Control-Allow-Methods','PUT,POST,GET,DELETE,PATCH');
return res.status(200).json({});
}
next();
});
app.use('/products',productRoutes);
app.use('/orders',ordersRoutes);
app.use((req,res,next) => {
const error= new Error('not found');
error.status = 404;
next(error);
});
app.use((error,req,res,next) =>{
res.status(error.status || 500);
res.json({
error: {
message: error.message 
}
})

})

module.exports = app;

我在终端中收到此错误:

{ MongoError: authentication fail
at C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibtopologiesreplset.js:1430:15
at C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibconnectionpool.js:877:7
at C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibconnectionpool.js:853:20
at finish (C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibauthscram.js:174:16)
at handleEnd (C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibauthscram.js:184:7)
at C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibauthscram.js:289:15
at C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibconnectionpool.js:544:18
at process._tickCallback (internal/process/next_tick.js:112:11)
name: 'MongoError',
message: 'authentication fail',
errors:
[ { name: 'node-rest-shard-00-00-dnqwa.mongodb.net:27017',
err: [MongoError] },
{ name: 'node-rest-shard-00-02-dnqwa.mongodb.net:27017',
err: [MongoError] } ] }

我确定使用的是正确的名称和密码,那么为什么它不能对我进行身份验证,服务器在我的本地主机上运行

编辑 所以我点击了文档链接,现在以这种方式连接:

mongoose.connect('mongodb://hilary:'+process.env.MONGO_ATLAS_PW+'@localhost:27017/test').catch(err => console.log(err));

然后我在终端中收到此错误:

{ MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
at Pool.<anonymous> (C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibtopologiesserver.js:505:11)
at Pool.emit (events.js:180:13)
at Connection.<anonymous> (C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibconnectionpool.js:329:12)
at Object.onceWrapper (events.js:272:13)
at Connection.emit (events.js:180:13)
at Socket.<anonymous> (C:UsersHiaryDocumentsrest-apinode_modulesmongodb-corelibconnectionconnection.js:245:50)
at Object.onceWrapper (events.js:272:13)
at Socket.emit (events.js:180:13)
at emitErrorNT (internal/streams/destroy.js:64:8)
at process._tickCallback (internal/process/next_tick.js:114:19)
name: 'MongoNetworkError',
message: 'failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]' }

有效的是猫鼬文档的轻微变化,这是在 Atlas 服务器上建议的,对于每个拥有 Mongodb 3.4+ 使用常规 mongo db 驱动程序连接的人,即使使用猫鼬,我的连接字符串如下所示:

mongoose.connect('mongodb+srv://hilary:<password>@node-rest-dnqwa.mongodb.net').catch(err => console.log(err));

相关内容

最新更新