Winston MongoDB-传递数据库时出现身份验证错误



我打开这个问题是因为我不确定这是否只发生在我身上。

当我在mongo url中传递数据库时,我在连接到数据库时遇到了问题。我使用的结构与此类似:

const logger = winston.createLogger({
levels: customLevels,
format: winston.format.combine(
winston.format.errors({ stack: true }),
winston.format.json(),
winston.format.timestamp(),
),
transports: [
new winston.transports.MongoDB({
db: `mongodb://user:pass@host:port/database`,
tryReconnect: true,
collection: 'logs',
options: { useNewUrlParser: true, useUnifiedTopology: true }
}),
],
});

但是当尝试连接时,我得到以下错误:

winston-mongodb: will try reconnecting in 10 seconds
winston-mongodb: error initialising logger MongoError: Authentication failed.

当我从mongodb的连接字符串中删除数据库时,它会连接并创建一个名为"的数据库;测试";在mongo上。用户名和密码是正确的,因为我输入了相同的数据来创建我试图连接的数据库。

还有人经历过类似的事情吗?

很可能您需要在uri中添加身份验证数据库,如下所示:

db: `mongodb://user:pass@host:port/database?authSource=admin`

其他方式mongo将在您提供的";数据库"。。。

使用以下代码在winston日志上添加数据库

new transports.MongoDB({
db:"mongodb_database_url",
options: {
useUnifiedTopology: true
}
})

您可以通过进入MongoDB云,选择您的集群并单击连接选项来获取数据库URL。然后选择连接你的应用程序,你可以在那里找到你的MongoDB数据库URL。

最新更新