3 回答

TA貢獻1890條經(jīng)驗 獲得超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條經(jīng)驗 獲得超2個贊
如前所述3.1.0-beta4,從外觀上看,驅動程序的發(fā)布“早已被釋放”。該版本是正在進行的工作的一部分,以支持MongoDB 4.0即將發(fā)布的版本中的較新功能并進行其他一些API更改。
useNewUrlParser由于圍繞連接URI實際工作方式的一些更改,該選項之一就是觸發(fā)當前警告。以后再說。
在問題“解決”之前,建議至少將其“固定”在次要版本上以進行3.0.x發(fā)布:
"dependencies": {
"mongodb": "~3.0.8"
}
這應該停止3.1.x在“新”安裝中將分支安裝到節(jié)點模塊。如果您已經(jīng)安裝了“ 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)
}
})()
在新代碼中,這是一個更“嚴格”的規(guī)則。要點在于,當前代碼本質上是“ node-native-driver”(npm mongodb)存儲庫代碼的一部分,而“ new code”實際上是從mongodb-core庫中導入的,從而“鞏固”了“ public”節(jié)點驅動程序。
添加“選項”的目的是通過將選項添加到新代碼中來“簡化”過渡,以便在添加選項的代碼中使用較新的解析器(實際上基于url),并清除棄用警告,從而驗證您傳入的連接字符串實際上符合新解析器的預期。
在將來的版本中,將刪除“舊版”解析器,然后即使沒有該選項,也將使用新的解析器。但是到那時,可以預期所有現(xiàn)有代碼都有足夠的機會根據(jù)新解析器的預期測試其現(xiàn)有連接字符串。
因此,如果您要在發(fā)布新的驅動程序功能時開始使用它們,請使用可用的beta版本和后續(xù)版本,并且最好通過啟用中的useNewUrlParser選項來確保您提供的連接字符串對于新的解析器有效MongoClient.connect()。
如果您實際上不需要訪問與MongoDB 4.0發(fā)行版預覽有關的功能,請將該版本固定到3.0.x前面提到的系列。這將按文檔所述進行,并且“固定”這可確保3.1.x在您實際要安裝穩(wěn)定的版本之前,不會在預期的依賴項上“更新”發(fā)行版。

TA貢獻1833條經(jīng)驗 獲得超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 關注
- 8557 瀏覽
添加回答
舉報