最近我在做 Next.js 我的项目部署 Cloudflare Pages 时发现本地开发调试、登录鉴权等好多问题,所以又想要切回到 Vercel 中,便有了这么一个我的项目,能够在 Cloudflare 以外的环境上失去相似于 Worker Runtime 的 KV 应用体验。
废话不多说,间接进入正题。
源码: https://github.com/willin/remote-cloudflare-kv
装置
npm install --save remote-cloudflare-kv# oryarn add remote-cloudflare-kv# orpnpm install --save remote-cloudflare-kv
应用
初始化
import CloudflareKV from 'remote-cloudflare-kv';export const NAMESPACE = new CloudflareKV({ account_id: process.env.CF_ACCOUNT_ID || '', namespace_id: process.env.CF_NAMESPACE_ID || '', // use bearer token api_token: process.env.CF_API_TOKEN || '', // or use email & api key api_email: '', api_key: ''});
写入 kv
await NAMESPACE.put(key, value);// void
设置超时:
// 传入 unix 工夫戳await NAMESPACE.put(key, value, { expiration: secondsSinceEpoch });// 传入秒数await NAMESPACE.put(key, value, { expirationTtl: secondsFromNow });
设置 Metadata:
await NAMESPACE.put(key, value, { metadata: { someMetadataKey: 'someMetadataValue' }});
读取 kv
// 替换 key & typeconst result = await NAMESPACE.get('key', { type: 'json' });console.log(result);// {"hello": 1}
反对的类型: text
、json
、arrayBuffer
、stream
。
读取 kv 并带 Metadata
const result = await NAMESPACE.getWithMetadata(key, { type: 'json' });// {"value": {"hello": 1}, "metadata": {"someKey": "someVal"}}
删除 kv
await NAMESPACE.delete(key);// void
列出 kv
const result = await NAMESPACE.list();console.log(result);
更多具体查问(在 Typescript 中):
await NAMESPACE.list({ prefix: string, limit: number, cursor: string });
列表响应参考:
{ "keys": [ { "name": "foo", "expiration": 1234, "metadata": { "someMetadataKey": "someMetadataValue" } } ], "list_complete": false, "cursor": "6Ck1la0VxJ0djhidm1MdX2FyD"}
参考资料
- Runtime API: https://developers.cloudflare.com/workers/runtime-apis/kv/
- RESTful API: https://developers.cloudflare.com/api/operations/workers-kv-n...
资助
- 关注我的 Github 账号:@willin
- 参加 爱发电 打算
- 支付宝或微信扫码打赏