【问题标题】:NodeJs create new array from MySQL query resultNodeJs 从 MySQL 查询结果创建新数组
【发布时间】:2019-08-24 16:00:44
【问题描述】:

在我的NodeJs 项目中,我想创建新的array 表单MySQL 查询结果。

这是我的结果:

[
    {
        "availabilityId": 1,
        "dayName": 1,
        "fromTime": "05:30:00",
        "toTime": "10:00:00"
    },
    {
        "availabilityId": 2,
        "dayName": 1,
        "fromTime": "10:30:00",
        "toTime": "06:00:00"
    },
    {
        "availabilityId": 3,
        "dayName": 2,
        "fromTime": "16:30:00",
        "toTime": "22:00:00"
    }
]

在此结果中,两个数据的dayName 相同。

这是我的预期结果

[
    {   
        "dayName": 1,
        "time":[
            {
                "availabilityId": 1,
                "fromTime": "05:30:00",
                "toTime": "10:00:00"
            },
            {
                "availabilityId": 2,
                "fromTime": "10:30:00",
                "toTime": "06:00:00"
            }
        ]
    },
    {   
        "dayName": 2,
        "time":[
            {
                "availabilityId": 3,
                "fromTime": "16:30:00",
                "toTime": "22:00:00"
            }
        ]
    }
]

我的代码:

CubbersAvailability.findAll(
    {
        where:{
            cubbersId:1,
            userId:2
        },
        attributes:['availabilityId', 'dayName', 'fromTime', 'toTime']
    }
).then(availabilityList =>{
    res.send(availabilityList);
    // code for create new array
}).catch(error=>{
    res.status(403).send({status: 'error', resCode:200, msg:'Internal Server Error...!', data:error});
});

【问题讨论】:

    标签: javascript jquery mysql arrays node.js


    【解决方案1】:

    足够简单,但非常具体。

    const source = [
        {
            "availabilityId": 1,
            "dayName": 1,
            "fromTime": "05:30:00",
            "toTime": "10:00:00"
        },
        {
            "availabilityId": 2,
            "dayName": 1,
            "fromTime": "10:30:00",
            "toTime": "06:00:00"
        },
        {
            "availabilityId": 3,
            "dayName": 2,
            "fromTime": "16:30:00",
            "toTime": "22:00:00"
        }
    ];
    
    function createNewArray(source) {
    
      let output = [];
    
      source.forEach(entry => {
    
        let dayName = entry.dayName;
        let time = {
          "availabilityId": entry.availabilityId,
          "fromTime": entry.fromTime,
          "toTime": entry.toTime
        };
    
        if (output[dayName] === undefined) {
          output[dayName] = {
            "dayName": entry.dayName,
            "time": []
          };
        }
    
        output[dayName].time.push(time);
    
      });
    
      output.shift(); //shouldn't be needed, but since [0] is empty, necessary.
    
      return output;
    
    }
    
    console.log(createNewArray(source));

    【讨论】:

    • 感谢您的代码正常工作,但结果来自链接ibb.co/bHTkw6w
    • 但是如果相同的dayName 表示同一数组中的数据,请查看我的预期结果
    • 兄弟你在吗
    • 更正了结构,但由于某种原因,它在开头添加了一个undefined,猜测是因为数组中没有0,只需检查条目是否为undefined如果是则跳过它。
    • 现在它正在工作,但最重要的是得到undefined
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2021-12-14
    • 2018-12-16
    • 2011-03-25
    • 2012-12-20
    • 2015-10-24
    相关资源
    最近更新 更多