跳转到内容
搜索文档

环境

最后更新 查看 MarkdownAgent 设置

KV 命名空间可与环境一起使用。当你的 Worker 代码中有引用 KV 绑定(binding)(如 MY_KV)的代码,且希望这些绑定(binding)指向不同的 KV 命名空间(例如,一个用于预发布,一个用于生产)时,这很有用。

以下 Wrangler 文件中的代码展示了如何拥有两个环境,它们有两个不同的 KV 命名空间,但绑定(binding)名称相同:

{
	"env": {
		"staging": {
			"kv_namespaces": [
				{
					"binding": "MY_KV",
					"id": "e29b263ab50e42ce9b637fa8370175e8"
				}
			]
		},
		"production": {
			"kv_namespaces": [
				{
					"binding": "MY_KV",
					"id": "a825455ce00f4f7282403da85269f8ea"
				}
			]
		}
	}
}
[[env.staging.kv_namespaces]]
binding = "MY_KV"
id = "e29b263ab50e42ce9b637fa8370175e8"

[[env.production.kv_namespaces]]
binding = "MY_KV"
id = "a825455ce00f4f7282403da85269f8ea"

为两个不同的 KV 命名空间使用相同的绑定(binding)名称,可使 Worker 代码更易读。

staging 环境中,MY_KV.get("KEY") 将从命名空间 ID e29b263ab50e42ce9b637fa8370175e8 读取。在 production 环境中,MY_KV.get("KEY") 将从命名空间 ID a825455ce00f4f7282403da85269f8ea 读取。

要向 staging KV 命名空间插入值,运行:

wrangler kv key put --env=staging --binding=<YOUR_BINDING> "<KEY>" "<VALUE>"

由于 --namespace-id 始终唯一(与绑定(binding)名称不同),你无需指定 --env 参数:

wrangler kv key put --namespace-id=<YOUR_ID> "<KEY>" "<VALUE>"

大多数 kv 子命令也允许你使用可选的 --env 标志指定环境。

使用可选的 --env 标志指定环境,允许你发布运行相同代码但使用不同 KV 命名空间的 Workers。

例如,你可以在 Wrangler 文件中使用单独的预发布和生产 KV 命名空间来存储 KV 数据:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"type": "webpack",
	"name": "my-worker",
	"account_id": "<account id here>",
	"route": "staging.example.com/*",
	"workers_dev": false,
	"kv_namespaces": [
		{
			"binding": "MY_KV",
			"id": "06779da6940b431db6e566b4846d64db"
		}
	],
	"env": {
		"production": {
			"route": "example.com/*",
			"kv_namespaces": [
				{
					"binding": "MY_KV",
					"id": "07bc1f3d1f2a4fd8a45a7e026e2681c6"
				}
			]
		}
	}
}
"$schema" = "./node_modules/wrangler/config-schema.json"
type = "webpack"
name = "my-worker"
account_id = "<account id here>"
route = "staging.example.com/*"
workers_dev = false

[[kv_namespaces]]
binding = "MY_KV"
id = "06779da6940b431db6e566b4846d64db"

[env.production]
route = "example.com/*"

  [[env.production.kv_namespaces]]
  binding = "MY_KV"
  id = "07bc1f3d1f2a4fd8a45a7e026e2681c6"

使用上述 Wrangler 文件,当你希望对 env.production 下的 KV 命名空间 MY_KV 执行 KV 操作时,可以指定 --env production

例如,使用上述 Wrangler 文件,你可以从生产 KV 实例获取值:

wrangler kv key get --binding "MY_KV" --env=production "<KEY>"

这篇文档对您有帮助吗?