Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.5K
Views
mongoose.connect(uri, ConnectOptions) no reconoce useNewUrlParser y otras opciones

Mi repositorio de GitHub: https://github.com/safiullah7/legan

Rama: redux

Estoy siguiendo este tutorial: https://tomanagle.medium.com/build-a-rest-api-with-node-js-typescript-mongodb-b6c898d70d61 y no puedo conectarme a mi mongodb. Aquí está mi archivo de código donde intento conectarme con mongodb:

 import config from "config"; import log from "../logger"; function connect() { const dbUri = config.get("dbUri") as string; return mongoose .connect(dbUri, { useNewUrlParser: true, useUnifiedTopology: true, }) .then(() => { log.info("Database connected"); }) .catch((error) => { log.error("db error", error); process.exit(1); }); } export default connect;

El compilador da el siguiente error:

 No overload matches this call. Overload 1 of 3, '(uri: string, callback: CallbackWithoutResult): void', gave the following error. Argument of type '{ useNewUrlParser: boolean; useUnifiedTopology: boolean; }' is not assignable to parameter of type 'CallbackWithoutResult'. Object literal may only specify known properties, and 'useNewUrlParser' does not exist in type 'CallbackWithoutResult'. Overload 2 of 3, '(uri: string, options?: ConnectOptions | undefined): Promise<typeof import("mongoose")>', gave the following error. Argument of type '{ useNewUrlParser: boolean; useUnifiedTopology: boolean; }' is not assignable to parameter of type 'ConnectOptions'. Object literal may only specify known properties, and 'useNewUrlParser' does not exist in type 'ConnectOptions'.

Soy nuevo en mecanografiado y nodo/mongoos. Agradecería su ayuda.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

La nueva versión de mongoose (la última versión cuando escribí esta publicación es 6.0.2 ) tiene las siguientes definiciones de tipo para la función connect() .

 /** Opens Mongoose's default connection to MongoDB, see [connections docs](https://mongoosejs.com/docs/connections.html) */ export function connect(uri: string, options: ConnectOptions, callback: CallbackWithoutResult): void; export function connect(uri: string, callback: CallbackWithoutResult): void; export function connect(uri: string, options?: ConnectOptions): Promise<Mongoose>;

El options object que estás pasando a la función connect()

 { useNewUrlParser: true, useUnifiedTopology: true, }

es, por lo tanto, debe tener un tipo de ConnectOptions .

La definición actual de ConnectOptions es la siguiente:

 interface ConnectOptions extends mongodb.MongoClientOptions { /** Set to false to [disable buffering](http://mongoosejs.com/docs/faq.html#callback_never_executes) on all models associated with this connection. */ bufferCommands?: boolean; /** The name of the database you want to use. If not provided, Mongoose uses the database name from connection string. */ dbName?: string; /** username for authentication, equivalent to `options.auth.user`. Maintained for backwards compatibility. */ user?: string; /** password for authentication, equivalent to `options.auth.password`. Maintained for backwards compatibility. */ pass?: string; /** Set to false to disable automatic index creation for all models associated with this connection. */ autoIndex?: boolean; /** Set to `true` to make Mongoose automatically call `createCollection()` on every model created on this connection. */ autoCreate?: boolean; }

Al observar la nueva definición de connect y ConnectOptions , podemos ver que no hay una definición de useNewUrlParser o useUnifiedTopology dentro de ConnectOptions . Esa es la razón por la que obtuvimos tal error. Puede eliminar las opciones useNewUrlParser: true, y useUnifiedTopology: true, y su código debería poder conectarse a su MongoDB. Si desea pasar algunas opciones a la función connect() , deben seguir la nueva definición de tipo de ConnectOptions .

over 4 years ago · Santiago Trujillo Report

0

Puede cambiar su función mongoose.connect a:

 mongoose.connect(dbUri, { useNewUrlParser: true, useUnifiedTopology: true, } as ConnectOptions)

Esta es la forma más sencilla

over 4 years ago · Santiago Trujillo Report

0

ACTUALIZACIÓN: Aclarando esta respuesta como referencia para futuros lectores.

Esta respuesta se aplica si está utilizando Mongoose v6+.

Otras respuestas explican cómo expandir mecanografiado para aceptar useNewUrlParser y otras opciones, lo que resolvería la pregunta original.

Sin embargo, según la documentación de Mongoose, si está utilizando Mongoose v6+, estas opciones ya NO son necesarias, ya que se han incluido como predeterminadas.

Según la guía de migración de Mongoose a la versión 6:

useNewUrlParser, useUnifiedTopology, useFindAndModify y useCreateIndex ya no son opciones compatibles. Mongoose 6 siempre se comporta como si useNewUrlParser, useUnifiedTopology y useCreateIndex fueran verdaderos y useFindAndModify fuera falso. Elimine estas opciones de su código.

https://mongoosejs.com/docs/migrating_to_6.html#no-more-deprecation-warning-options

Por lo tanto, ya no es necesario incluir estas opciones. Me imagino que es por eso que ya no están incluidos en el tipo ConnectOptions.

Si está utilizando una versión anterior de Mongoose, consulte las otras respuestas para saber cómo expandir el tipo ConnectOptions para permitir estas opciones.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!