我正在学习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);
});