mongodb异步操作的失败和表达nodejs



我正在学习Nodejs mongodb连接我尝试下面的代码,但我没有得到所需的输出

MongoDbConnectivity.js:

// Connect using a MongoClient instance
const MongoClient = require("mongodb").MongoClient;
const test = require("assert");
const logger = require("./loggers");
// Connection url
const url = "mongodb://localhost:27017";
// Database Name
const dbName = "test";
// Connect using MongoClient
const mongoClient = new MongoClient(url);
//function getData() {
async function getData() {
mongoClient.connect(async function (err, client) {
const db = client.db(dbName);
try {
const Mainresult = await db
.collection("employeeDetails")
.find({})
.toArray()
.then((result) => {
return result;
})
.catch((err) => {
logger.errorLog(err);
return err;
console.log(err);
});
console.log(Mainresult); //I am getting Output in Console
return Mainresult;
} catch (e) {
console.log(e);
} finally {
client.close();
}
});
}
module.exports.getData = getData;

NodeJS express code:

var express = require("express");
var app = express();
var config = require("./config.json");
const logger = require("./loggers");
var bodyParser = require("body-parser");
const cors = require("cors");
const mongoDb = require("./MongoDbConnectivity");

app.use(bodyParser.json());
// app.use(
//   cors({
//     methods: ["GET", "POST", "DELETE", "UPDATE", "PUT", "PATCH"],
//   })
// );
app.use(cors());
app.get("/getEmployees",async function (req, res) {
console.log("before hitting the Mongo");
// var employeeData = mongoDb.getData().then((result) => {
//  return result;
// });
var employeeData =await mongoDb.getData();
console.log("After hitting the Mongo");
console.log("from Node:" + employeeData);
res.send(employeeData);
});

var mongoServer = app.listen(5000, function () {
logger.infoLog(
"Server Started at :" +
new Date().toLocaleDateString("en-US", { timeZone: "America/New_York" })
);
console.log("Server is running..");
});

控制台输出是:

服务器正在运行。在击中蒙戈之前击中蒙戈之后从节点:未定义的

我没有得到所需的输出,这是mongodb文档,而不是我得到这个未定义的

YourgetData是一个承诺。因此,您需要使用await调用该方法并将回调函数更改为async在快车路线上。

来自:

function (req, res)

:

async function (req, res)

来自:

var employeeData = mongoDb.getData()

:

var employeeData = await mongoDb.getData()

结果:

app.get("/getEmployees", async function (req, res) {
var employeeData = await mongoDb.getData();
res.send(employeeData);
});

最新更新