mysql 通过JSON对象的迭代在TIMESTAMP时失败

x33g5p2x  于 2023-03-28  发布在  Mysql
关注(0)|答案(1)|浏览(115)

我想通过MySQL(MariaDB)DB响应提供的所有JSON数据。
我找到了一个函数,可以通过迭代来获取和记录键:值对。
之后,我想将所有这些值以HTML的形式发送到一个表中(目前我还不知道如何轻松地做到这一点,但这是下一步。)(也许我可以通过创建“ul - li”结构来动态地创建一个表,其中包含对象或键:值对的信息,以便能够作为主体发送到我的“视图”-或者也许有一个更好的解决方案来做到这一点。)
数据库响应的数据如下:

[
  {
    ID: 5,
    UID: 'E123456',
    LogDate: 2023-03-24T12:55:25.000Z,
    SensorName: 'Sensor1',
    SensorValue: '20.01'
  },
  {
    ID: 6,
    UID: 'E123456',
    LogDate: 2023-03-24T12:55:45.000Z,
    SensorName: 'Sensor1',
    SensorValue: '21.20'
  }
]

迭代JSON的函数是:

function iterateRecursively(object, callbackFunction) {
    // Walk through object
    for (var keyName in object) {
        // If the given parameter is an object, call the function over and 
        // over again, till you get a string or number        

        if (typeof object[keyName] === 'object') {
            console.log("Object - Typeof : " + typeof(keyName));
            iterateRecursively(object[keyName], callbackFunction);
        } else {
            // Callback function to do something with results outside of main function
            if (typeof callbackFunction === 'function') {
                callbackFunction(keyName, object[keyName]);
            }
        }
    }
}

这是对DB的请求并记录数据:

let data = await db.getSensorData(FzID);

iterateRecursively(data, function (key, value) {
 console.log(key + " = " + value + "(" + typeof(key) + " : " + typeof(value) + ")");
    });

控制台日志:

Object - Typeof : string
ID = 5(string : number)
UID = E123456(string : string)
Object - Typeof : string
SensorName = Sensor1(string : string)
SensorValue = 20.01(string : string)
Object - Typeof : string
ID = 6(string : number)
UID = E123456(string : string)
Object - Typeof : string
SensorName = Sensor1(string : string)
SensorValue = 21.20(string : string)

数据库中的LogDate列类型为“timestamp

**为什么LogDate被忽略,如何获取这些值?**感谢帮助。

jtoj6r0c

jtoj6r0c1#

答案很简单,LogDate的类型是“object”。你传入的数组也是“object”类型。所以要让它像你想的那样工作,你需要检查它是否不是Date或Array,因为Array也是“object”类型。

var obj = object[keyName];
if (typeof obj === 'object' && !(obj instanceof Date) && !Array.isArray(obj)) {
    console.log("Object - Typeof : " + typeof(keyName));
    iterateRecursively(object[keyName], callbackFunction);
}

相关问题