Como se señaló, el 3.1.0-beta4
lanzamiento del controlador fue "liberado en la naturaleza" un poco antes por el aspecto de las cosas. La versión es parte del trabajo en progreso para admitir nuevas características en la próxima versión de MongoDB 4.0 y hacer algunos otros cambios de API.
Uno de esos cambios que desencadena la advertencia actual es el useNewUrlParser
opción, debido a algunos cambios en torno a cómo funciona realmente el URI de conexión. Más sobre eso más tarde.
Hasta que las cosas "se calmen", probablemente sería aconsejable "anclar" al menos a la versión menor para 3.0.x
lanzamientos:
"dependencies": {
"mongodb": "~3.0.8"
}
Eso debería evitar que la 3.1.x
rama se instale en instalaciones "nuevas" en módulos de nodo. Si ya instaló una versión "más reciente" que es la versión "beta", entonces debe limpiar sus paquetes (ypackage-lock.json
) y asegurarse de llevarla a una 3.0.x
versión en serie.
En cuanto al uso de las "nuevas" opciones de URI de conexión, la restricción principal es incluir el port
en la cadena de conexión:
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)
}
})()
Esa es una regla más "estricta" en el nuevo código. El punto principal es que el código actual es esencialmente parte del mongodb
código de repositorio "node-native-driver" (npm ), y el "nuevo código" realmente importa delmongodb-core
biblioteca que "sustenta" el controlador de nodo "público".
El objetivo de la "opción" que se agrega es "facilitar" la transición al agregar la opción al nuevo código para que el analizador más nuevo (en realidad basado en url
) se esté utilizando en el código que agrega la opción y borra la advertencia de desaprobación y, por lo tanto, verifica que sus cadenas de conexión pasadas realmente cumplen con lo que espera el nuevo analizador.
En futuras versiones, el analizador 'heredado' se eliminaría y luego el nuevo analizador simplemente será lo que se use, incluso sin la opción. Pero para ese momento, se espera que todo el código existente tenga una amplia oportunidad de probar sus cadenas de conexión existentes contra lo que espera el nuevo analizador.
Entonces, si desea comenzar a usar las nuevas funciones del controlador a medida que se lanzan, use las versiones disponibles beta
y posteriores e idealmente asegúrese de proporcionar una cadena de conexión que sea válida para el nuevo analizador habilitando la useNewUrlParser
opción MongoClient.connect()
.
Si realmente no necesita acceso a las funciones relacionadas con la vista previa de la versión MongoDB 4.0, fije la versión a una 3.0.x
serie como se indicó anteriormente. Esto funcionará según lo documentado y "anclando" esto asegura que las 3.1.x
versiones no se "actualicen" sobre la dependencia esperada hasta que realmente desee instalar una versión estable.
beta
versión que de alguna manera se lanzó el npm durante el fin de semana. No se preocupe por eso hasta que la API esté realmente finalizada. Hiciste lo correcto al instalar una versión estable.