最近我在做 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}

反对的类型: textjsonarrayBufferstream

读取 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
  • 参加 爱发电 打算
  • 支付宝或微信扫码打赏