Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.5K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda