猫鼬连接发出警告

Dav*_*e B 10 mongoose node.js

我正在写一个mongodb连接的应用程序,并在连接到服务器时像下面收到这样的警告:

Db.prototype.authenticate方法将不再在下一个主要版本3.x中可用,因为MongoDB 3.6将仅允许对admin数据库中的用户进行身份验证,并且将不再允许套接字上的多个凭据.请使用带有身份验证凭据的MongoClient.connect进行身份验证.

我的代码就像吼叫

import mongoose from 'mongoose';
import config from './config';
mongoose.connect(config.db.uri);
Run Code Online (Sandbox Code Playgroud)

在config.js

const config = {
    name: 'API',
    version: '0.0.1',
    env: process.env.NODE_ENV || 'development',
    port: process.env.PORT || 3000,
    base_url: process.env.BASE_URL || 'http://localhost:3000',
    db: {
        uri: 'mongodb://admin:harry123@127.0.0.1:27017/ai?authSource=admin',
    },
}

export default config;
Run Code Online (Sandbox Code Playgroud)

我使用的是Node v8.0.0和mongoose 4.10.5

fis*_*ch2 11

这是一个无害的警告和一个已知的猫鼬问题.有关详细信息,请参阅mongoose线程,但是从mongoose 4.10.5开始,没有已知的解决方法,它不应该影响应用程序的功能.


Phu*_*Ngo 5

该警告是由于 MongoDB 驱动程序弃用了 mongoose 的默认连接逻辑所使用的 API。从 mongoose 4.11.1 开始,您可以通过设置useMongoClient选项来选择使用 mongo 客户端,例如

mongoose.connect(config.db.uri, { useMongoClient: true, /* other options */ })
Run Code Online (Sandbox Code Playgroud)

请注意,使用 Mongo 本机客户端可能会产生不良影响,因此请务必彻底测试所有内容,
在此处查看更多详细信息