回调后访问RowDataPacket时的奇怪行为

问题描述 投票:0回答:1

我有以下函数来检索一个sql行对象。

function KnownConditionByUserFarm(d, callback) {
    var where = [
        d.user_hash,
        d.id,
        d.icon,
        d.days_since,
    ]

    sql = "SELECT id, NOW() as now, time, FROM_UNIXTIME(time), date_created, DATEDIFF(NOW(), FROM_UNIXTIME(time)) as days_since FROM weathers WHERE user_hash = ? AND farm_id = ? AND icon = ? AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL ? DAY));"

    query = db.query(sql, where, function (err, result) {
        if (err) {
            return callback(err, null)
        } else {
            return callback(null, result)
        }

    });
}

我可以在我的处理器函数中检索它,并且可以做一个控制台日志。

KnownConditionByUserFarm(data, (error, cond) => {

    if (error) {
        console.log("KnownConditionByUserFarm.Error:")
        console.log(error)
        process.exit()
    } else {

        console.log("KnownConditionByUserFarm/result")
        console.log(cond) // <-- can be accessed

    }
})

结果是 console.log(cond)

KnownConditionByUserFarm/result
[ RowDataPacket {
    id: 19,
    now: 2020-05-07T03:10:20.000Z,
    time: 1587772800,
    'FROM_UNIXTIME(time)': 2020-04-24T16:00:00.000Z,
    date_created: 2020-04-24T22:16:13.000Z,
    days_since: 12 } ]

然而,当我试图访问对象的其余部分时,如 id, day_since我收到以下错误信息。

编码

console.log(cond[0].id)

错误

KnownConditionByUserFarm/result
[ RowDataPacket {
    id: 19,
    now: 2020-05-07T03:14:51.000Z,
    time: 1587772800,
    'FROM_UNIXTIME(time)': 2020-04-24T16:00:00.000Z,
    date_created: 2020-04-24T22:16:13.000Z,
    days_since: 12 } ]
19 <-- I was able to access, but it's returning cannot read property.
KnownConditionByUserFarm/result
[]
***Parser.js:437
      throw err; // Rethrow non-MySQL errors
      ^

TypeError: Cannot read property 'id' of undefined

我能够进入 id但它却扔出一个奇怪的 TypeError: Cannot read property 'id' of undefined.

请注意,我甚至试图做一个

var w = JSON.parse(JSON.stringify(cond))
console.log(w[0])

结果如下。

{ id: 19,
  now: '2020-05-07T03:22:24.000Z',
  time: 1587772800,
  'FROM_UNIXTIME(time)': '2020-04-24T16:00:00.000Z',
  date_created: '2020-04-24T22:16:13.000Z',
  days_since: 12 }

当我进入 id

console.log(w[0].id)

结果。

*/Parser.js:437
      throw err; // Rethrow non-MySQL errors
      ^

TypeError: Cannot read property 'id' of undefined

可能缺少什么?

javascript node.js callback node-mysql
1个回答
0
投票

我不知道是什么原因导致了我所遇到的问题,但我通过再做一次并仔细记录,直到得到我所需要的东西,才得以解决。

var w = JSON.stringify(cond[0])
console.log(w)

var p = JSON.parse(w)
console.log(p)

console.log(p.id)
console.log(p.days_since)

var ps = JSON.parse(JSON.stringify(cond[0]))
console.log(ps.days_since)
© www.soinside.com 2019 - 2024. All rights reserved.