使用mongodb数据库处理节点中的get请求数据

Handling data with get request in node with mongodb database

本文关键字:get 请求 数据 节点 mongodb 数据库 处理 使用      更新时间:2023-09-26

没有问题。如何将猫鼬查询与JSON响应同步?下面的代码返回空值,因为查询稍后结束。哪一种处理方式呢?

router.route('/admin')
    .get(function (req, res ) {
        var country = [];
        var element = [];
        Country.find({}, function (err, data) {
            country = data; 
        });
        Items.find({}, function (err, data) {    
            element = data;         
        }); 
        res.json({
            countries: country,
            elements: element
        });         
    }); 

国家。find和Items。Find是异步执行的——并同时运行。您需要将它们嵌套在回调函数中以支持异步执行模式——这样您就可以确保它们是同步执行的。所以你的代码应该像这样:

Country.find({}, function (err, data) {
        country = data; 
        Items.find({}, function (err, data) {    
            element = data;        
            res.json({
              countries: country,
              elements: element
            });   
        }); 
    });

一种更高级、可能更好的方法是使用promise库——这意味着它们仍然是异步执行的,但只有在所有函数的所有结果可用时才返回完整的结果——下面解释:

执行几个猫鼬查询:如何使用承诺代替?