javascript - Neden createIndex kullanımıyla ilgili itibarsızlaştırma hatası alıyorum?


Yani MongoDB Atlas ile etkileşimde bulunmak için mongoose kullanarak bir express sunucusu oluşturmak için TypeScript kullanıyorum. Son zamanlarda uygulamamın içinde birden fazla veritabanı kullanmaya ve bu yeni "mimari"ye uyacak şekilde şemalarımı değiştirmeye karar verdim. Ancak bunu yapmak bir kullanımdan kalkma uyarısı ortaya çıkardı:

(node:2096) Kullanımdan Kaldırma Uyarısı: collection.ensureIndex kullanımdan kaldırıldı. Bunun yerine createIndexes kullanın. (Uyarının nerede oluşturulduğunu göstermek için node --trace-deprecation ... komutunu kullanın)

Hatanın nerede meydana geldiğini zaten belirledim. Bu, şemayı bir mongoose modeline eşlediğimde meydana geliyor.

Hatanın meydana geldiği uygulama kodu:

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

Hatanın oluşmadığı uygulama kodu:

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

İşte MongoDB'ye bağlantı mantığım:

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;

Gördüğünüz gibi, benim zaten useCreateIndex: true var, bu yüzden hatanın neden oluştuğunu bilmiyorum. Bu hatayı şemaya eklediğimde ortadan kalkıyor, ama bunun iyi bir çözüm olduğunu düşünmüyorum:

{ timestamps: true, autoIndex: false }

O zaman burada yanlış ne yapıyorum? Teşekkürler!

Cevap #1

Tamam, görünüşe göre çözüm, mongoose.connect(...) kullanmadan önce mongoose.set(...) kullanmaktı. Bu yüzden deprecation uyarım kayboldu:

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;

Bu seçenekleri her zaman connect fonksiyonunun içinde başkalarının ayarladığını gördüm, bu yüzden set fonksiyonu hakkında hiç bilgim yoktu.