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

152
Visualizações
Why am I getting createIndex deprecation error?

So I am using TypeScript to build an express server using mongoose to interact with MongoDB Atlas. Recently I decided to use multiple databases inside my app and change up my schemas to accommodate this new "architecture". However doing so made a deprecation warning appear:

(node:2096) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead. (Use node --trace-deprecation ... to show where the warning was created)

I have already pinpointed where the error is happening. It is happening when I map the schema to a mongoose model.

Implementation code where error does occur:

const db = mongoose.connection.useDb("Authentication");
const User = db.model<UserInterface>("User", UserSchema);

Implementation code where error does NOT occur:

const User = mongoose.model<UserInterface>("User", UserSchema);

Here is my connection logic to mongodb:

import mongoose from "mongoose";

async function connect() {
   try {
      const uri = <string>process.env.MONGO_URI;
      await mongoose.connect(uri, {
         useNewUrlParser: true,
         useUnifiedTopology: true,
         useCreateIndex: true,
      });
      console.log("MongoDB Connected...");
      return;
   } catch (err) {
      process.exit(1);
   }
}

export default connect;

As you can see I already have useCreateIndex: true so I don't know why the error is occuring. The error does go away when I add this to the schema but I don't think its a good solution:

{ timestamps: true, autoIndex: false }

So what am I doing wrong here? Thank You!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Ok so looks like the solution was to use mongoose.set(...) before using mongoose.connect(...). So this made my deprecation warning disappear:

import mongoose from "mongoose";

async function connect() {
   try {
      const uri = <string>process.env.MONGO_URI;
      mongoose.set("useNewUrlParser", true);
      mongoose.set("useUnifiedTopology", true);
      mongoose.set("useCreateIndex", true);
      mongoose.set("useFindAndModify", false);
      await mongoose.connect(uri);
      console.log("MongoDB Connected...");
      return;
   } catch (err) {
      process.exit(1);
   }
}

export default connect;

I always saw others setting these options inside the connect function so I never knew about the set function.

about 4 years ago · Juan Pablo Isaza 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