如何在节点js中获取表单数据并查询mongodb

时间:2018-09-21 15:05:08

标签: node.js mongodb

我正在尝试获取表单数据,查询数据库并查找与该数据相关的文档数量,并为该控制台计数(为简单起见)。

app.post('/process_get', function(req, res){
    response = {
        first_name : req.body.first_name,
        last_name : req.body.last_name,
        gender: req.body.gender
        };
    dbConn.then( function (db) {
        var dbo = db.db("azima");
        var count = dbo.collection('users').find({first_name: req.body.first_name}, {gender: req.body.gender}).count();
        console.log(count);
    });

    console.log(response);

    //convert the response in JSON format
    res.end('Data received:\n' + JSON.stringify(req.body));
});

但是我正在关注:

Example app listening at http://:::8888
{ first_name: 'Najar Man', last_name: 'Malakar', gender: 'Male' }
Promise { <pending> }

我知道这是由于异步特性造成的,但是我不知道如何执行此“简单”操作,因为我是node.js和mongodb的新手。

如何将count值正确存储为变量?

1 个答案:

答案 0 :(得分:1)

如果您正在使用最新技术。使用异步/等待。

   app.post('/process_get',function(req, res){
        response = {
            first_name : req.body.first_name,
            last_name : req.body.last_name,
            gender: req.body.gender
            };
    dbConn.then( function (database) {
            var dbo = database.db("azima");
            var count
   dbo.collection('users').find({first_name: req.body.first_name}, 
                                 {gender: req.body.gender})
                                 .count(function(err,resCount){
                                  if(err){
                                    console.log(err)}
                                  else{
                                    count = resCount  
                                    console.log(count);
            res.end('Data received:\n' + JSON.stringify(req.body));
                   }
                 });

    }).catch(function(e){console.log(e)})

    console.log(response);

    //convert the response in JSON format
});

如果可以,请尝试添加,否则,请尝试共享catch块中的内容 有关何时从mongo查询发送数据的更多信息,则需要将res.send放入dbConn.then内,否则它将不等待mongodb查询,而您将发送