// 示例 5:KV 数据存储全流程(单值 / 批量 / 前缀)。 // // 用法: // node 05_data_storage_kv.js 'use strict'; const { makeClient } = require('./_common'); (async () => { const svc = makeClient(); const prefix = 'demo:nb:'; // ':' 作分隔:前缀查询/删除是 SQL LIKE,'_' 会被当通配符 console.log(`[1/6] 单键写入 ${prefix}user1`); await svc.saveCustomData(`${prefix}user1`, { value: JSON.stringify({ name: 'alice', age: 20 }) }); console.log('[2/6] 单键读取'); const u1 = await svc.getCustomData(`${prefix}user1`); console.log(' ->', u1 && u1.data); console.log('[3/6] 批量写入(user2 / user3)'); await svc.saveMultipleCustomData([ { key: `${prefix}user2`, value: JSON.stringify({ name: 'bob', age: 30 }) }, { key: `${prefix}user3`, value: JSON.stringify({ name: 'carol', age: 25 }) }, ]); console.log('[4/6] 列出 prefix 下所有 key'); const keys = await svc.getCustomDataKeys(prefix); console.log(' ->', keys && keys.keys); // 响应字段是 keys(不是 data) console.log(`[5/6] 删除单个 ${prefix}user2`); await svc.deleteCustomData(`${prefix}user2`); console.log('[6/6] 按前缀批量删除'); await svc.deleteCustomData(prefix, { isPrefix: true }); const final = await svc.getCustomDataKeys(prefix); console.log(' 清理后剩余 keys:', (final && final.keys) || []); })().catch((e) => { console.error('失败:', e.body || e.message || e); process.exit(1); });