3 回答
TA贡献1890条经验 获得超9个赞
检查您的mongo版本
mongo --version
如果您使用的版本> = 3.1.0,请将mongo连接文件更改为->
MongoClient.connect("mongodb://localhost:27017/YourDB", { useNewUrlParser: true })
或您的猫鼬连接文件--
mongoose.connect("mongodb://localhost:27017/YourDB", { useNewUrlParser: true });
理想情况下,它是第4版功能,但v3.1.0及更高版本也支持它。 有关详细信息,请查看MongoDB Github。
TA贡献1863条经验 获得超2个赞
如前所述3.1.0-beta4,从外观上看,驱动程序的发布“早已被释放”。该版本是正在进行的工作的一部分,以支持MongoDB 4.0即将发布的版本中的较新功能并进行其他一些API更改。
useNewUrlParser由于围绕连接URI实际工作方式的一些更改,该选项之一就是触发当前警告。以后再说。
在问题“解决”之前,建议至少将其“固定”在次要版本上以进行3.0.x发布:
"dependencies": {
"mongodb": "~3.0.8"
}
这应该停止3.1.x在“新”安装中将分支安装到节点模块。如果您已经安装了“ beta”版本的“最新”版本,则应清理软件包(和package-lock.json),并确保将其降级为3.0.x系列版本。
至于实际使用“新”连接URI选项,主要限制是实际port在连接字符串上包括:
const { MongoClient } = require("mongodb");
const uri = 'mongodb://localhost:27017'; // mongodb://localhost - will fail
(async function() {
try {
const client = await MongoClient.connect(uri,{ useNewUrlParser: true });
// ... anything
client.close();
} catch(e) {
console.error(e)
}
})()
在新代码中,这是一个更“严格”的规则。要点在于,当前代码本质上是“ node-native-driver”(npm mongodb)存储库代码的一部分,而“ new code”实际上是从mongodb-core库中导入的,从而“巩固”了“ public”节点驱动程序。
添加“选项”的目的是通过将选项添加到新代码中来“简化”过渡,以便在添加选项的代码中使用较新的解析器(实际上基于url),并清除弃用警告,从而验证您传入的连接字符串实际上符合新解析器的预期。
在将来的版本中,将删除“旧版”解析器,然后即使没有该选项,也将使用新的解析器。但是到那时,可以预期所有现有代码都有足够的机会根据新解析器的预期测试其现有连接字符串。
因此,如果您要在发布新的驱动程序功能时开始使用它们,请使用可用的beta版本和后续版本,并且最好通过启用中的useNewUrlParser选项来确保您提供的连接字符串对于新的解析器有效MongoClient.connect()。
如果您实际上不需要访问与MongoDB 4.0发行版预览有关的功能,请将该版本固定到3.0.x前面提到的系列。这将按文档所述进行,并且“固定”这可确保3.1.x在您实际要安装稳定的版本之前,不会在预期的依赖项上“更新”发行版。
TA贡献1833条经验 获得超4个赞
没什么改变,只通过连接功能{useNewUrlParser: true }就可以了
MongoClient.connect(url,{ useNewUrlParser: true },function(err,db){
if(err){
console.log(err);
}
else {
console.log('connected to '+ url);
db.close();
}
})
- 3 回答
- 0 关注
- 8446 浏览
添加回答
举报