首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >向node.js和postgres中的每个for循环添加响应

向node.js和postgres中的每个for循环添加响应
EN

Stack Overflow用户
提问于 2018-06-11 14:44:35
回答 1查看 169关注 0票数 0

我有很多这样的学校:

代码语言:javascript
复制
{
 "schools": [
            {
                "name": "S1",
                "id": 1
            },
            {
                "name": "S2",
                "id": 2
            },
            {
                "name": "S3",
                "id": 3
            }
        ]
}

每所学校都有课程表。为此,我在promise中迭代了学校数组,当我得到响应时,我得到了一个类似下面的数组

代码语言:javascript
复制
{
 "schools": [
            {
                "name": "S1",
                "id": 1
            },
            {
                "name": "S2",
                "id": 2
            },
            {
                "name": "S3",
                "id": 3
            }
        ],
"schedules": [
            [],
            [
                {
                    "id_schedule": 58,
                    "hour1": "13:00:00",
                    "hour2": "20:00:00",
                    "id_schools_schedule": 2
                }
            ],
            [
                {
                    "id_schedule": 59,
                    "hour1": "06:30:00",
                    "hour2": "22:30:00",
                    "id_schools_schedule": 3
                }
            ]
        ]
}

我想知道。如何指定每一项的响应?这是我的代码

代码语言:javascript
复制
for (var i =0; i < datosRes.schools.length; i++){
                array_horarios.push(ObtSchedule(datosRes.schools, i))
              }
              Promise.all(array_horarios).then(response => {
                datosRes.horarios = response;
                eq.local = data;
              }).catch(err => {
                return res.json(200,{"datos":datosRes});
              })

function ObtHorario(schools, i){
  return new Promise(function(resolve, reject){
    var id_school = schools[i].id;
    Mod_Schedule.obtSchedule(id_school,function(error, data){
      if(error || data.error){
        errorDB = {"error_log": error, "error_data": data.error};
        reject(errorDB)
      }else{
        resolve(data)
      }
    })
  })
}

我做错了什么?我得到了答复,但我只想将时间表添加到学校的每个项目中

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-11 15:04:28

首先要做的是:您可以对一个请求发送一个响应。因此,您发送多个响应的问题是无效的。

这就是你能做的,你可以得到一系列的学校及其时间表。

如果您使用的是MongoDB,则可以执行以下操作:

使用Aggregate查询:

代码语言:javascript
复制
db.schools.aggregate([
    {
        $match: {} // Your condition to match schools here
    },
    {
        $lookup: {
                      from:"schedules",
                      localField: id,
                      foreignField: id_schools_schedule,
                      as: "schedulesData"
                 }
    },
]);

在这里,您将获得类似以下内容的数据:

代码语言:javascript
复制
[
        {
            "name": "S1",
            "id": 1,
    "schedulesData": []
        },
        {
            "name": "S2",
            "id": 2,
    "schedulesData": [{
                "id_schedule": 58,
                "hour1": "13:00:00",
                "hour2": "20:00:00",
                "id_schools_schedule": 2
            }]
        },
        {
            "name": "S3",
            "id": 3,
    "schedulesData": [
            {
                "id_schedule": 59,
                "hour1": "06:30:00",
                "hour2": "22:30:00",
                "id_schools_schedule": 3
            }
        ]
        }
    ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50791786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档