繁体   English   中英

TypeScript-类型“ {}”的参数不能分配给类型“ {}”的参数-MongoStore

[英]TypeScript - Argument of type '{}' is not assignable to parameter of type '{}' - MongoStore

我对TS相对较新,并且在new MongoStore()参数中遇到类型问题。 通常,我可以通过编写db: database作为JS中的参数来重用Native MongoDB连接,但是TS显示以下错误:

类型'{{db:Db; }'不能分配给'MongoUrlOptions |类型的参数。 MogooseConnectionOptions | NativeMongoOptions | NativeMongoPromiseOptions”。 输入'{db:Db; }”不能分配给“ NativeMongoPromiseOptions”类型。 类型'{{db:Db; }'。

我尝试将new MongoStore({ db: database } as NativeMongoOptions) ,但这也无济于事。

[更新]添加as NativeMongoOptions会产生差异错误:

输入'{db:Db; }”不可分配给“ 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);
    }
})();

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

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

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

"@types/mongodb": "^3"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM