node.js - 如何使用nodejs向邮递员返回响应
问题描述
我正在用 express 学习 nodejs。所以我已经连接了mongodb并使用nodejs从db中获取数据。当我点击邮递员的网址时,我可以检索数据,但问题是无法向邮递员返回响应。我可以在控制台中看到结果。如果我尝试了setTimeout,它工作正常..但这不是正确的方法。我尝试了 res.send() 方法来返回响应,但没有用。请帮我解决这个问题
app.post('/getmongo',function (req,res){
console.log("I received a request");
console.log(req.body.filters)
filters = req.body.filters
console.log(typeof filters)
var ism = []
db.collection('collection_name').find(filters,function(err,data){
if(err){
console.log(err)
return res.send(500,'something went wrong')
}
else{
data.each(function(err,doc){
console.log(doc)
ism.push(doc)
});
setTimeout(function(){res.send({"ISM":ism})},1000)
}
});
});
解决方案
您可以将查找结果作为数组返回,而不是在数据中迭代并将结果插入数组。
因此,您的函数将如下所示:
app.post('/getmongo', function(req, res) {
filters = req.body.filters;
db.collection('collection_name').find(filters).toArray(function(err, docs) {
if (err) {
console.log(err);
return res.send(500, 'something went wrong');
} else {
res.send({"ISM": docs});
// If you want to return JSON
// res.json({"ISM": docs});
}
});
});
推荐阅读
- visual-studio-code - VSCode:在cmder中清除终端
- python - 如何从字典中的字典中提取值?
- python-3.x - 如何从 Python 中的继承方法中覆盖方法
- python - 为什么将图像导出到 Google Drive 时,Google Colab 中出现绿色复选标记,但在 Drive 中找不到文件?
- python - 将不同元素类型的列表转换为整数列表
- debugging - 无法使用 Visual Studio Code 在 Chrome 中调试 Vue 应用程序 - 无界断点
- c++ - 将 Apache 箭头表写入字符串 C++
- python - astropy.wcs 的问题:PCi_ja 矩阵是奇异的
- mongodb - Golang mongo-go-driver 索引检查
- c# - 如何处理具有不同数据类型的同一个表的多个实例连接到同一个 EF 模型