TypeScript - Аргумент типа '{}' не может быть назначен параметру типа '{}' - MongoStore

Я относительно новичок в TS, и я столкнулся с проблемой типа в new MongoStore() параметры. Обычно я могу повторно использовать соединение Native MongoDB, написав db: database в качестве аргумента в JS, но TS показывает следующую ошибку:

Аргумент типа '{ db: Db; }'нельзя назначить параметру типа'MongoUrlOptions | MogooseConnectionOptions | NativeMongoOptions | NativeMongoPromiseOptions. Тип '{ db: Db; }'нельзя назначить типу'NativeMongoPromiseOptions'. Свойство 'dbPromise' отсутствует в типе '{db: Db; }".

Я пробовал писать new MongoStore({ db: database } as NativeMongoOptions), но это тоже не помогает.

[ОБНОВЛЕНИЕ] добавление as NativeMongoOptions выдает ошибку diff:

Тип '{ 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);
    }
})();

1 ответ

Решение

Обнаружил проблему, это было с типизацией TS все время, @types/connect-mongo использует более старую версию @ types / mongodb ^ 2, где я использую @ types / mongodb ^ 3 в моем проекте.

Текущее решение: обновите зависимости пакета @types/connect-mongo до новейших (перезаписав @ types / mongodb ^ 2 до ^3).

Вам понадобится строка ниже в ваших devDependencies внутри package.json

"@types/mongodb": "^3"
Другие вопросы по тегам