首页 > 解决方案 > 如何使用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)
         }
    });

 });

标签: node.jsreactjsexpress

解决方案


您可以将查找结果作为数组返回,而不是在数据中迭代并将结果插入数组。

因此,您的函数将如下所示:

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});
        }
    });
});

http://mongodb.github.io/node-mongodb-native/3.1/quick-start/quick-start/#find-documents-with-a-query-filter


推荐阅读