Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取此数组的值_Javascript_Node.js_Mongoose - Fatal编程技术网

Javascript 如何获取此数组的值

Javascript 如何获取此数组的值,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,})) 在使用findOne搜索值之后,我将其推入abc数组。由于数组是一个异步函数,如何将其作为res.json发送 router.post('/ingredients', (req, res) => { var abc = []; var a = data.toString().split("\r\n"); var arr = a.toString().split(","); arr.forEach(

}))

在使用findOne搜索值之后,我将其推入abc数组。由于数组是一个异步函数,如何将其作为res.json发送

router.post('/ingredients', (req, res) => {
   
var abc = [];

   var a = data.toString().split("\r\n");      
    var arr = a.toString().split(",");

    arr.forEach(function (i, e) {

      if (i != "\r" && i != "\n" && i != "" && i != " ")
      {
        var v = i.trim().toLowerCase();
       
          Ingredient.findOne({name: v}, (err, us) => {

            if(us)
            {          
              var rr = {
                name: us.name,
                category: "haram"
              }
              abc.push(rr);  
            }

           
          });  
        } 
    })
  })  

这会解决你的问题。基本上,您创建一系列承诺,然后等待所有承诺得到解决。更优雅的解决方案是使用异步/等待方法。

您必须等待所有承诺完成,例如使用
Promise。all
您的意思是将其作为响应发送吗?您是否尝试过res.json({})@塔普拉我该怎么做?我正在我的应用程序中使用回调function@themagicbean回答是。但在异步函数中,它是空的。@Taplar是的,这是mongoose。我粘贴了整个代码,但是stackoverflow不让我粘贴,所以我不得不删除其中的一些代码。
router.post('/ingredients', (req, res) => {
    var abc = [];
    var a = data.toString().split("\r\n");
    var arr = a.toString().split(",");
    var promises = [];

    arr.forEach(function (i, e) {
        if (i != "\r" && i != "\n" && i != "" && i != " ") {
            var v = i.trim().toLowerCase();

            promises.push(new Promise((resolve, reject) => {
                Ingredient.findOne({ name: v }, (err, us) => {
                    if (us) {
                        var rr = {
                            name: us.name,
                            category: "haram"
                        }
                        abc.push(rr);
                    }
                    resolve();
                });
            }))
        }
    })

    Promise.all(promises).then(() => {
        res.json(abc);
    })
});