Node.js 节点/快速异步函数res.send出现在控制台中,而不是页面中
我有一些从mongo数据库获取数据的代码 express app.get中的函数将显示在浏览器url中,但在此代码中,结果仅显示在控制台中,而不显示在网页中,这是应该的 代码如下:Node.js 节点/快速异步函数res.send出现在控制台中,而不是页面中,node.js,mongodb,express,async-await,Node.js,Mongodb,Express,Async Await,我有一些从mongo数据库获取数据的代码 express app.get中的函数将显示在浏览器url中,但在此代码中,结果仅显示在控制台中,而不显示在网页中,这是应该的 代码如下: async function showdb() { var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, { us
async function showdb() {
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db('mydb');
dbo.collection('test').findOne({}, function(err, result) {
if (err) throw err;
console.log(result);
return result;
// res.send(result); // commented out
// db.close(); // commented out
});
});
}
现在是路线:
app.get('/', (req, res) => {
showdb().then(result => {
res.send(result); // result is showing in the console
})
})
res.send(结果)代码>应该在浏览器中显示数据,但它在控制台中显示数据
如何修复此问题?您没有包括服务器正在侦听的端口。尝试添加以下代码,这可能会对您有所帮助
var app = express();
app.set('port', 3000);
var server= app.listen(app.get('port'), function()
{
var port = server.address().port;
console.log(" Iam at Port:" + " " + port);
});
您没有包括服务器正在侦听的端口。尝试添加以下代码,这可能会对您有所帮助
var app = express();
app.set('port', 3000);
var server= app.listen(app.get('port'), function()
{
var port = server.address().port;
console.log(" Iam at Port:" + " " + port);
});
和
函数返回一个承诺,因此您可以链接它们,而无需使用代码较少的回调:
function showdb() {
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
return MongoClient.connect(url, { useNewUrlParser: true })
.then((db) => {
return db.db('mydb').collection('test').findOne({});
});
}
现在,showdb
功能将返回对路线的承诺。和
函数返回一个承诺,因此您可以链接它们,而无需使用代码较少的回调:
function showdb() {
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
return MongoClient.connect(url, { useNewUrlParser: true })
.then((db) => {
return db.db('mydb').collection('test').findOne({});
});
}
现在,showdb
函数将返回对路线的承诺。情况并非如此。。。该代码位于页面底部。如果我把这个showdb代码放在app.get里面,它就可以正常工作了。看起来和异步有关?不是这样的。。。该代码位于页面底部。如果我把这个showdb代码放在app.get里面,它就可以正常工作了。它看起来与异步有关?控制台中显示了什么?它的类型是什么?它显示这个:{u id:5c9669ee4f401121adb78209,desc:'这是数据'}控制台显示什么?它的类型是什么?它显示如下:{u id:5c9669ee4f401121adb78209,desc:'这是数据'}