mongodb method without function not working in nodejs

Solution 1:

The findOne method returns a Promise. You should handle its result in a callback function:

db.collection('Station').findOne({ _id: 4 }, function (err, a) {
  if (err) {
    console.log(err);
  } else if (a) {
    console.log(a);
  } else {
    console.log('No a\n');
  }
});

Or using async - await:

client.connect(async (err) => {
    ...

    let a = await db.collection('Station').findOne({ _id: 4 })

    ...
});

EDIT To handle the import - export problem you should handle the datase connection operations separate async functions.
You may use the connection function to return the database instance:

const {MongoClient} = require('mongodb');

const uri = "mongodb+srv://name:pass@clusterurl/metro4?retryWrites=true&w=majority";
// all fields are correctly filled

const client = new MongoClient(uri);

const connectDB = async () => {
    try {
        // Connect to the MongoDB cluster
        await client.connect();
        return client.db('metro4');
    } catch (e) {
        throw e;
    }
}

const disconnectDB = () => {
    client.close();
}

module.exports = { connectDB, disconnectDB };

Then use these functions to handle your database related operations:

const { connectDB, disconnectDB } = require('../database');

const getStations = async () => {
    const db = connectDB();
    if (!db) return;
    try {
        const data = await db.collection('Station').find().toArray();
        return data;
    } catch (err) {
        throw err;
    } finally {
        disconnectDB();
    }
}

const getStation = async (id) => {
    const db = connectDB();
    if (!db) return;
    try {
        const data = await db.collection('Station').findOne({ _id: id});
        return data;
    } catch (err) {
        throw err;
    } finally {
        disconnectDB();
    }
}