我有下一个代码:
const {value: myValue} = await db.queryFirstRow(
`SELECT value FROM some_table
WHERE id = 1`);
当我尝试选择不存在的值时,会引发异常:Cannot destructure property 'value' of '(intermediate value)' as it is null
。
如何使该查询将null放入myValue
并且不引发异常?
答案 0 :(得分:1)
如果您总是期望一行,那么在SQL中是一种解决方案。使用聚合,因此总是返回一行:
SELECT MAX(value) as value
FROM some_table
WHERE id = 1;
如果id = 1
不存在,则它将返回一行,其中包含NULL
值。
答案 1 :(得分:1)
在null
的情况下,您可以使用nullish coalescing operator (??)
提供默认值。
const {value: myValue} = (await db.queryFirstRow(
`SELECT value FROM some_table WHERE id = 1`)) ?? {value: null};
如果不可用,可以使用logical OR (||) operator
提供null
的默认值。如果您认为某些falsy
值可用(例如''
或0
),则可能会遇到意外的行为。
const {value: myValue} = (await db.queryFirstRow(
`SELECT value FROM some_table WHERE id = 1`)) || {value: null};