我有以下函数来检索一个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
可能缺少什么?
我不知道是什么原因导致了我所遇到的问题,但我通过再做一次并仔细记录,直到得到我所需要的东西,才得以解决。
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)