我正在尝试调用一个函数并等待该函数获取数据,然后再执行进一步的语句。我是 node js 和 async/await 和 promises 的新手。我尝试了一些解决方案,但没有奏效,它总是返回 Promise { undefined }。
如果我在不使用单独函数的情况下运行代码,它可以正常工作。但我必须在这里使用函数进行数据库连接。
这是我的代码。
数据库.js
const mongoClient = require('mongodb').MongoClient;
const db_url = "mongodb_url";
const database_name = "mydb";
module.exports.GetAllUsersData = async function (){
mongoClient.connect(db_url,{ useUnifiedTopology: true },function(err,dbserver){
if(err) throw err;
var mydb = dbserver.db(database_name);
mydb.collection('users').find({}).toArray(function(err,results){
console.log(results); //I am getting data here
return Promise.resolve(results);
});
});
}
应用程序.js
const express = require('express');
const db = require('./db.js');
//
const app = express();
app.set(express.static('public'));
app.set('view engine','ejs');
var urlencodeparser = express.urlencoded({extended:false});
app.get('/',function(req,res){
var results = db.GetAllUsersData();
results.then(console.log(results)); //getting promise {undefined} here
res.render('home.ejs',{users:results})
})
console.log('connected...')
app.listen(9000);