Node Js链接响应

达布拉尔

我试图在一个循环内进行数据库调用,并希望将该数据添加到一个对象中,然后将该对象发送给用户,但是我在用户端仅得到一个空对象。我已经将这个异步响应入到JavaScript NodeJS中的循环中

router.get('/collection', (req, res) => {
    const Data = {}

     Section.find({})
           .then(sections => {
             sections.map(section => {
                  let id = section._id;
                   Product.find({section: id})
                         .then(products => {
                           // console.log(products)
                            Data[section.title] = {
                                title: section.title,
                                routeName: section.title,
                                id,
                                items: products
                            }
                            console.log(Data)
                         })
                         .catch(err => {
                            return res.status(500).json(err)
                         })

              })
              return res.json(data)
           })
           .catch(err => {
               return res.status(500).json(err)
           })
})

我希望输出像:-

{
  food : {
           items: [...]
         },
  vegetable: {
            items: [...]
             }
}

食物和蔬菜是从数据库调用中获取的键,并且每个键中的项都从对数据库的单独调用中返回。

EOL

return res.json(data)在解析任何映射的产品承诺之前执行(也有错别字,因为您返回data而不是Data)。一种方法是映射find-promises并Promise.all在映射的数组上使用。就像是:

router.get('/collection', (req, res) => {
    const Data = {}

    Section.find({})
    .then(sections => {
        const sectionProductPromises = sections.map(section => {
            let id = section._id;
            return Product.find({
                    section: id
                })
                .then(products => {                     
                    Data[section.title] = {
                        title: section.title,
                        routeName: section.title,
                        id,
                        items: products
                    }
                });

        });
        return Promise.all(sectionProductPromises);    
    })
    .then(() => {
        res.json(Data)
    })
    .catch(err => {
        res.status(500).json(err)
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将GET请求与响应Node.js链接

来自分类Dev

以响应方式将后端(通过Node.js中Express服务器上的Mongoose通过MongoDB链接到MongoDB)以响应方式链接到前端(Bootstrap或Foundation)?

来自分类Dev

如何修改Node JS响应

来自分类Dev

Node js swagger 响应说明

来自分类Dev

node.js(express)链接CSS / JS

来自分类Dev

Node.js用异步数据响应

来自分类Dev

node.js从回调发送响应

来自分类Dev

Node.js中的处理程序响应

来自分类Dev

Node.js HTTP响应流

来自分类Dev

放慢Node.js中的响应

来自分类Dev

Node.js的不同行为响应

来自分类Dev

json的node.js流数组以响应

来自分类Dev

空的Node.js / Express响应

来自分类Dev

覆盖Node.js Express响应方法

来自分类Dev

如何使用Node JS发送多个响应

来自分类Dev

防止Nginx缓存Node.js响应

来自分类Dev

如何使用Node JS Express响应xml?

来自分类Dev

Node js,函数不等待响应

来自分类Dev

Node.js中的处理程序响应

来自分类Dev

如何使用Node JS发送多个响应

来自分类Dev

在Node.js中解析JSON响应

来自分类Dev

从 Angular 中的 Node.js 获取响应

来自分类Dev

Node.js Jade从配置加载链接

来自分类Dev

链接Docker容器:Node.js + MongoDB

来自分类Dev

在Node.js中检测硬链接

来自分类Dev

显示来自数组的链接 (node.js)

来自分类Dev

跟踪点击链接的位置 node.js

来自分类Dev

发送响应到Node.js中的Angular.js

来自分类Dev

如何从Node.js API正确发送响应代码