环境(Environments)是代码运行的不同上下文。Cloudflare Developer Platform 允许您创建和管理不同环境。通过环境,您可以将同一项目部署到多个位置并使用多个名称。
要为不同环境指定不同的 D1 数据库,请在 Wrangler 文件中使用以下语法:
{
"env": {
// This is a staging environment
"staging": {
"d1_databases": [
{
"binding": "<BINDING_NAME_1>",
"database_name": "<DATABASE_NAME_1>",
"database_id": "<UUID1>"
}
]
},
// This is a production environment
"production": {
"d1_databases": [
{
"binding": "<BINDING_NAME_2>",
"database_name": "<DATABASE_NAME_2>",
"database_id": "<UUID2>"
}
]
}
}
}[[env.staging.d1_databases]]
binding = "<BINDING_NAME_1>"
database_name = "<DATABASE_NAME_1>"
database_id = "<UUID1>"
[[env.production.d1_databases]]
binding = "<BINDING_NAME_2>"
database_name = "<DATABASE_NAME_2>"
database_id = "<UUID2>"在上面的代码中,staging 环境使用的数据库(DATABASE_NAME_1)与 production 环境(DATABASE_NAME_2)不同。
如果您需要为不同环境指定不同的 D1 数据库,您的 Wrangler 配置文件 中的绑定可能如下所示:
{
"production": {
"d1_databases": [
{
"binding": "DB",
"database_name": "DATABASE_NAME",
"database_id": "DATABASE_ID"
}
]
}
}[[production.d1_databases]]
binding = "DB"
database_name = "DATABASE_NAME"
database_id = "DATABASE_ID"在上述配置中:
[[production.d1_databases]]创建一个production对象,其中包含属性d1_databases,d1_databases是一个对象数组,因为您可以创建多个 D1 绑定(如果您有多个数据库)。- 下方形如
<key> = <value>的每一行都是d1_databases数组中某个对象的属性。
因此,上述绑定等价于:
{
"production": {
"d1_databases": [
{
"binding": "DB",
"database_name": "DATABASE_NAME",
"database_id": "DATABASE_ID"
}
]
}
}{
"env": {
"staging": {
"d1_databases": [
{
"binding": "BINDING_NAME_1",
"database_name": "DATABASE_NAME_1",
"database_id": "UUID_1"
}
]
},
"production": {
"d1_databases": [
{
"binding": "BINDING_NAME_2",
"database_name": "DATABASE_NAME_2",
"database_id": "UUID_2"
}
]
}
}
}[[env.staging.d1_databases]]
binding = "BINDING_NAME_1"
database_name = "DATABASE_NAME_1"
database_id = "UUID_1"
[[env.production.d1_databases]]
binding = "BINDING_NAME_2"
database_name = "DATABASE_NAME_2"
database_id = "UUID_2"上述配置等价于以下 JSON 结构:
{
"env": {
"production": {
"d1_databases": [
{
"binding": "BINDING_NAME_2",
"database_id": "UUID_2",
"database_name": "DATABASE_NAME_2"
}
]
},
"staging": {
"d1_databases": [
{
"binding": "BINDING_NAME_1",
"database_id": "UUID_1",
"database_name": "DATABASE_NAME_1"
}
]
}
}
}