Come notato, il 3.1.0-beta4
rilascio del driver è stato "rilasciato in natura" un po 'presto dall'aspetto delle cose. La versione fa parte dei lavori in corso per supportare le nuove funzionalità della prossima versione di MongoDB 4.0 e apportare alcune altre modifiche all'API.
Una di queste modifiche che attiva l'avviso corrente è l' useNewUrlParser
opzione, a causa di alcune modifiche al funzionamento effettivo del passaggio dell'URI di connessione. Ne parleremo più avanti.
Fino a quando le cose non si "sistemeranno", sarebbe probabilmente consigliabile "bloccare" almeno la versione minore per le 3.0.x
versioni:
"dependencies": {
"mongodb": "~3.0.8"
}
Ciò dovrebbe impedire l' 3.1.x
installazione della diramazione su installazioni "nuove" sui moduli del nodo. Se hai già installato una versione "più recente" che è la versione "beta", allora dovresti ripulire i tuoi pacchetti (e package-lock.json
) e assicurarti di 3.0.x
scaricarlo fino a una versione in serie.
Per quanto riguarda effettivamente l'utilizzo delle "nuove" opzioni di URI di connessione, la restrizione principale è quella di includere effettivamente port
la stringa di connessione:
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)
}
})()
Questa è una regola più "rigorosa" nel nuovo codice. Il punto principale è che il codice corrente è essenzialmente parte del mongodb
codice del repository "nodo-nativo-driver" (npm ) e il "nuovo codice" in realtà importa dalla mongodb-core
libreria che "sostiene" il driver del nodo "pubblico".
Il punto dell '"opzione" che viene aggiunta è quello di "facilitare" la transizione aggiungendo l'opzione al nuovo codice in modo che il parser più recente (attualmente basato intorno url
) venga utilizzato nel codice aggiungendo l'opzione e cancellando l'avvertimento di deprecazione, e quindi verificando che le stringhe di connessione passate sono effettivamente conformi a quanto previsto dal nuovo parser.
Nelle versioni future il parser 'legacy' verrebbe rimosso e quindi il nuovo parser sarà semplicemente quello che viene usato anche senza l'opzione. Ma a quel punto, si prevede che tutto il codice esistente avesse ampie opportunità di testare le stringhe di connessione esistenti rispetto a ciò che il nuovo parser si aspetta.
Quindi, se si desidera iniziare a utilizzare le nuove funzionalità del driver man mano che vengono rilasciate, utilizzare le versioni disponibili beta
e successive e idealmente assicurarsi di fornire una stringa di connessione valida per il nuovo parser abilitando l' useNewUrlParser
opzione in MongoClient.connect()
.
Se in realtà non hai bisogno di accedere alle funzionalità relative all'anteprima della versione MongoDB 4.0, aggiungi la versione a una 3.0.x
serie come notato in precedenza. Funzionerà come documentato e il "blocco" garantisce che le 3.1.x
versioni non vengano "aggiornate" rispetto alla dipendenza prevista fino a quando non si desidera effettivamente installare una versione stabile.
beta
Viene dalla versione che in qualche modo è stata rilasciata su npm durante il fine settimana. Non preoccuparti fino a quando l'API non è stata finalizzata. Hai fatto la cosa giusta installando una versione stabile.