【发布时间】:2021-07-25 13:55:47
【问题描述】:
typescript连接mongo数据库报错,全局声明conn后可以读取未定义的conn
UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“conn” 在 Object.connectToDatabase [默认]
import { MongoClient, Db } from "mongodb";
import config from "../config/config";
const { dbName, mongoDBUri } = config;
type MongoConnection = {
client: MongoClient;
db: Db;
};
declare global {
namespace NodeJS {
interface Global {
mongodb: {
conn: MongoConnection | null;
promise: Promise<MongoConnection> | null;
};
}
}
}
let cached = global.mongodb;
async function connectToDatabase() {
if (cached.conn) {
return cached.conn;
}
if (!cached.promise) {
const opts = {
useNewUrlParser: true,
useUnifiedTopology: true,
};
cached.promise = MongoClient.connect(mongoDBUri as string, opts).then(
(client) => {
return {
client,
db: client.db(dbName),
};
}
);
}
cached.conn = await cached.promise;
return cached.conn;
}
export default connectToDatabase;
【问题讨论】:
-
很明显,
global.mongodb是未定义的。您必须在某处为其分配一个值。 -
请问在哪里以及如何将值添加到
global.mongodb
标签: node.js typescript mongodb