HarmonyOS 鸿蒙Next 键值型数据库 创建 kvStore 中 schema 有什么作用?

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 键值型数据库 创建 kvStore 中 schema 有什么作用?

请教下 键值型数据库 创建 kvStore 时,这里携带了 schema,这里有什么作用?

let kvStore: distributedKVStore.SingleKVStore | undefined = undefined;

try {

  let child1 = new distributedKVStore.FieldNode(‘id’);

  child1.type = distributedKVStore.ValueType.INTEGER;

  child1.nullable = false;

  child1.default = ‘1’;

  let child2 = new distributedKVStore.FieldNode(‘name’);

  child2.type = distributedKVStore.ValueType.STRING;

  child2.nullable = false;

  child2.default = ‘zhangsan’;

  let schema = new distributedKVStore.Schema();

  schema.root.appendChild(child1);

  schema.root.appendChild(child2);

  schema.indexes = [’$.id’, ‘$.name’];

  // 0表示COMPATIBLE模式,1表示STRICT模式。

  schema.mode = 1;

  // 支持在检查Value时,跳过skip指定的字节数,且取值范围为[0,4M-2]。

  schema.skip = 0;

  const options: distributedKVStore.Options = {

    createIfMissing: true,

    encrypt: false,

    backup: false,

    autoSync: false,

    // kvStoreType不填时,默认创建多设备协同数据库

    // 多设备协同数据库:kvStoreType: distributedKVStore.KVStoreType.DEVICE_COLLABORATION,

    kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,

    // schema 可以不填,在需要使用schema功能时可以构造此参数,例如:使用谓词查询等。

    schema: schema,

    securityLevel: distributedKVStore.SecurityLevel.S1

  };

  kvManager.getKVStore<distributedKVStore.SingleKVStore>(‘storeId’, options, (err, store: distributedKVStore.SingleKVStore) => {

    if (err) {

      console.error(Failed to get KVStore: Code:${err.code},message:${err.message});

      return;

    }

    console.info(‘Succeeded in getting KVStore.’);

    kvStore = store;

    // 请确保获取到键值数据库实例后,再进行相关数据操作

  });

} catch (e) {

  let error = e as BusinessError;

  console.error(An unexpected error occurred. Code:${error.code},message:${error.message});

}

if (kvStore !== undefined) {

  kvStore = kvStore as distributedKVStore.SingleKVStore;

    // 进行后续相关数据操作,包括数据的增、删、改、查、订阅数据变化等操作

    // …

}


更多关于HarmonyOS 鸿蒙Next 键值型数据库 创建 kvStore 中 schema 有什么作用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

Schema表示数据库模式,可以在创建或打开数据库时创建Schema对象并将它们放入Options中。

更多关于HarmonyOS 鸿蒙Next 键值型数据库 创建 kvStore 中 schema 有什么作用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Schema 是用来做逻辑上数据隔离吗?

在HarmonyOS鸿蒙Next键值型数据库中,创建kvStore时定义schema起到了关键的结构定义与数据校验作用。

具体来说,schema为键值对存储提供了数据模型,它定义了存储中键(key)和值(value)的类型、结构以及约束条件。这确保了数据的一致性和完整性,使得开发者能够清晰地知道每个键值对的预期格式。例如,schema可以指定某个键应为字符串类型,其对应的值应为整数或特定格式的字符串等。

此外,schema还有助于提升数据库的性能。通过预先定义数据的结构,数据库能够更有效地进行数据存储、检索和索引操作,减少不必要的数据转换和格式校验开销。

在HarmonyOS鸿蒙Next键值型数据库中,使用schema还能够实现跨平台的数据兼容性和迁移性,确保在不同设备或环境中,数据能够保持一致的结构和含义。

总之,在创建kvStore时定义schema是确保数据正确存储、高效访问和跨平台兼容的重要步骤。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部