0

我对 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);
    }
})();
4

2 回答 2

1

您需要在 package.json 中的 devDependencies 中使用以下行

"@types/mongodb": "^3"
于 2019-08-15T16:34:07.577 回答
0

发现了问题,一直是 TS 类型,@types/connect-mongo使用旧版本的@types/mongodb ^2,我在我的项目中使用@types/mongodb ^3。

当前解决方案,将@types/connect-mongo包依赖项更新为最新的(将@types/mongodb ^2 覆盖为 ^3)。

于 2018-07-27T10:04:55.693 回答