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的既定设计模式,主要基于以下考虑:
- 错误处理一致性:所有无效操作都通过异常机制处理
- 明确区分"键不存在"和"值为空"的情况
- 强制开发者显式处理边界情况
当前推荐的两种处理方式:
- try-catch捕获
BusinessError
,检查error.code是否为14700101(表示键不存在) - 使用
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行为。