我对 TS 比较陌生,并且在new MongoStore()
参数中遇到了类型问题。通常我可以通过db: database
在 JS 中作为参数写入来重用 Native MongoDB 连接,但是 TS 显示以下错误:
'{ db: Db; 类型的参数 }' 不能分配给 'MongoUrlOptions | 类型的参数 Mogoose 连接选项 | NativeMongo 选项 | NativeMongoPromiseOptions'。键入'{分贝:分贝;}' 不可分配给类型 'NativeMongoPromiseOptions'。'{ db: Db; 类型中缺少属性 'dbPromise' }'。
我试过写new MongoStore({ db: database } as NativeMongoOptions)
,但这也无济于事。
[更新] 添加as NativeMongoOptions
会产生差异错误:
键入'{分贝:分贝;}' 不可分配给类型 'NativeMongoOptions'。属性“db”的类型不兼容。类型 'import("/node_modules/@types/mongodb/index").Db' 不可分配给类型 'import("/node_modules/@types/connect-mongo/node_modul...'。缺少属性 'authenticate'在“Db”类型中。
这是我的代码或 TS 类型的问题吗?
下面是我的代码片段。
const MongoStore: connectMongo.MongoStoreFactory = connectMongo(session);
const app: express.Application = express();
enableMiddleware(app);
(async () => {
try {
const client: mongodb.MongoClient = await mongodb.MongoClient.connect(config.dbUrl, { useNewUrlParser: true });
console.log("Connected correctly to server");
const database: mongodb.Db = client.db(config.dbName);
app.use(session({
resave: false,
saveUninitialized: false,
secret: "secret123",
store: new MongoStore({
db: database,
}),
}));
app.use(router(database));
} catch (error) {
console.log("Error connecting to MongoDB", error);
}
})();