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"