最近我在做 Next.js 我的项目部署 Cloudflare Pages 时发现本地开发调试、登录鉴权等好多问题,所以又想要切回到 Vercel 中,便有了这么一个我的项目,能够在 Cloudflare 以外的环境上失去相似于 Worker Runtime 的 KV 应用体验。
废话不多说,间接进入正题。
源码:https://github.com/willin/remote-cloudflare-kv
装置
npm install --save remote-cloudflare-kv
# or
yarn add remote-cloudflare-kv
# or
pnpm 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 & type
const 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
- 参加 爱发电 打算
- 支付宝或微信扫码打赏