Search code examples
javascriptnode.jstypescriptmongodbnode-modules

This expression is not callable. Type 'Promise<void>' has no call signatures. (Mongodb-Nodejs)


I am trying to connect mongodb with node (ts).
while connecting I am getting this error "This expression is not callable. Type 'Promise<void>' has no call signatures"

  1. data.ts

    import mongoDb, { MongoClient } from "mongodb";
    import dotenv from "dotenv";
    
    dotenv.config();
    
    export const mongoDBConnection = MongoClient.connect(
        process.env.MONGODB_URL as string,
    
    )
    .then(async (client) => {
        const database = client.db();
        const collection = database.collection("todos");
        const dataFromMongo = await collection.find().toArray();
        console.log(dataFromMongo);
    })
    .catch(error => {
        console.error("MongoDB connection error:", error);
    });
    
    
  2. app.ts

    import express, { Request, Response } from "express";
    import { router } from "./routes/routes";
    import { mongoDBConnection } from "./database/data";
    
    const app = express();
    
    app.use(express.urlencoded({ extended: false }));
    app.use(express.json());
    app.use("/", router);
    mongoDBConnection();
    
    app.listen(8000, () => {
        console.log("App is running at port 8000");
    });
    

I am getting error in the line

mongoDBConnection();

enter image description here


Solution

  • mongoDBConnection isn't a function so you can't call it.

    So instead, try:

    export const mongoDBConnection = () => MongoClient.connect(
    ...