gpt4 book ai didi

javascript - 为什么我会收到 createIndex 弃用错误?

转载 作者:行者123 更新时间:2023-12-04 17:14:14 24 4
gpt4 key购买 nike

所以我正在使用 TypeScript 构建一个 express 服务器,使用 mongooseMongoDB Atlas 交互。最近我决定在我的应用程序中使用多个数据库并更改我的架构以适应这种新的“架构”。然而,这样做会导致 deprecation warning 出现:

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

我已经确定了错误发生的位置。当我将模式映射到 Mongoose 模型时,就会发生这种情况。

出现错误的实现代码:

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

不发生错误的实现代码:

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

这是我与 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;

如您所见,我已经有了 useCreateIndex: true,所以我不知道为什么会出现错误。 错误确实消失了,当我将其添加到架构中时,但我认为这不是一个好的解决方案:

{ timestamps: true, autoIndex: false }

那么我在这里做错了什么?谢谢!

最佳答案

好吧,看起来解决方案是使用 mongoose.set(...) before 使用 mongoose.connect(...)。所以这让我的弃用警告消失了:

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;

我总是看到其他人在 connect 函数中设置这些选项,所以我从来不知道 set 函数。

关于javascript - 为什么我会收到 createIndex 弃用错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68989684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com