【发布时间】:2021-04-23 01:01:14
【问题描述】:
我正在尝试将 next.js/examples/with-mongodb/util/mongodb.js 转换为 TS,以便我可以在 TS next.js 项目中缓存并恢复与 Mongo 的连接。我在cache.promise 上收到一个 TS 错误,上面写着:
Type 'Promise<MongoClient | { client: MongoClient; db: Db; }>' is not assignable to type 'Promise<MongoClient>'
我应该如何在 global 上正确声明 mongo 属性以安抚 TS 大神?
import { MongoClient, Db } from "mongodb";
const { DATABASE_URL, DATABASE_NAME } = process.env;
declare global {
namespace NodeJS {
interface Global {
mongo: {
conn: MongoClient | null;
promise: Promise<MongoClient> | null;
};
}
}
}
let cached = global.mongo;
if (!cached) {
cached = global.mongo = { conn: null, promise: null };
}
async function connect() {
if (cached.conn) {
return cached.conn;
}
if (!cached.promise) {
const opts = {
useNewUrlParser: true,
useUnifiedTopology: true,
};
cached.promise = MongoClient.connect(DATABASE_URL, opts).then((client) => {
return {
client,
db: client.db(DATABASE_NAME),
};
});
}
cached.conn = await cached.promise;
return cached.conn;
}
export { connect };
【问题讨论】:
-
nextjs with-mongodb 已更改。你没有把新版本转换成 TypeScript。如果是的话,请你分享一下
标签: mongodb typescript next.js