HarmonyOS鸿蒙Next中键值数据库使用await 获取一个不存在的key值不能返回null或者undefined?

HarmonyOS鸿蒙Next中键值数据库使用await 获取一个不存在的key值不能返回null或者undefined? 键值数据库使用await 获取一个不存在的key值不能返回null或者undefined?或者提供一个查询键是否存在的api? 现在只能通过try catch或者回调err来判断?

2 回复

在HarmonyOS鸿蒙Next的键值数据库中,使用await获取不存在的key值时,会抛出BusinessError异常(错误码为15500010),而不是返回null或undefined。这是鸿蒙键值数据库的特定设计行为,需要通过try-catch捕获处理。示例代码结构应为:

try {
  const value = await kvStore.get('nonExistingKey');
  // 此处不会执行
} catch (err) {
  // err.code === 15500010 表示key不存在
}

更多关于HarmonyOS鸿蒙Next中键值数据库使用await 获取一个不存在的key值不能返回null或者undefined?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next的键值数据库API设计中,确实存在这个特性。当使用get()方法查询不存在的键时,系统会抛出BusinessError异常而非返回null/undefined。这是API的既定设计模式,主要基于以下考虑:

  • 错误处理一致性:所有无效操作都通过异常机制处理
  • 明确区分"键不存在"和"值为空"的情况
  • 强制开发者显式处理边界情况

当前推荐的两种处理方式:

  1. try-catch捕获BusinessError,检查error.code是否为14700101(表示键不存在)
  2. 使用has()方法先判断键是否存在(API 10+版本支持)

示例代码:

// 方式1:try-catch
try {
  const value = await kvStore.get('non_existent_key');
} catch (err) {
  if (err.code === 14700101) {
    console.log('Key does not exist');
  }
}

// 方式2:has()检查
if (await kvStore.has('key')) {
  const value = await kvStore.get('key');
}

这种设计虽然需要额外处理,但能确保数据操作的严谨性。后续版本可能会优化这个API行为。

回到顶部