如果参数不存在,则返回null

时间:2020-06-10 11:07:47

标签: javascript sql

我有下一个代码:

  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并且不引发异常?

2 个答案:

答案 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};