4 min read 约757字
我的网站是使用cloudflare pages部署的,今天在使用的时候看到了workers下面有个D1的数据库的选项,就点开了解了一下!
它官网是这么介绍的:
Create new serverless SQL databases to query from your Workers and Pages projects.Available on Free and Paid plans
意思就是说它是一个 serverless SQL
可以在它的workers和pages项目中使用。
正好今天周末无事,外面还下着大雨。就试试他的可玩性如何!
首先安装他的wrangler cli工具
npm install -g @cloudflare/wrangler
使用他的命令 d1创建一个名叫 d1-example 的数据库
wrangler d1 create d1-example
这里会让你登录,但我因为我网络的问题,没能成功登录,所以我就在他网页上创建了一个,接下来在配置文件中wrangler.toml
添加这个数据库的配置
name = "helloworld" //你的程序名称
main = "src/index.js" //入口文件
[[d1_databases]] //数据库配置
binding = "DB" # i.e. available in your Worker on env.DB
database_name = "d1-example" 刚才创建的数据库名称
database_id = <your-database-id> # 数据库id,可以在cloudflare的数据库页面查看
这里我们传递一个SQL文件 来构建我们的测试数据 data.sql
DROP TABLE IF EXISTS test;
CREATE TABLE IF NOT EXISTS test (
id integer PRIMARY KEY AUTOINCREMENT,
author text NOT NULL,
age text NOT NULL,
body text NOT NULL
);
INSERT INTO test (author, age, body) VALUES ('cheung', '18', '一只大帅逼');
把date.sql写入数据库
wrangler d1 execute d1-example --file date.sql
接下来我们是用 Hono 一个 Express.js 风格的框架来构建我们的后端 API
import { Hono } from 'hono';
const app = new Hono();
app.get('/', (c) => c.text('hello world'));
export default app;
wrangler dev
之后打开 http://127.0.0.1:8787
就可以看到了hello world!
接下来我们读取数据库的数据
app.get('/api', async (c) => {
const { results } = await c.env.DB.prepare(
`
SELECT * FROM test
`
).all();
return c.json(results);
});
浏览器输入 http://127.0.0.1:8787/api
就可以看到数据库中的数据了!
[{ "id": 1, "author": "cheung", "age": "18", "body": "一只大帅逼" }]
接下来我们插入一条数据
app.post('/add/:author/:age/:body', async (c) => {
const { author, age, body } = c.req.param();
const { success } = await c.env.DB.prepare(
`INSERT INTO test (author, age, body) VALUES (?, ?, ?)`
)
.bind(author, age, body)
.run();
if (success) {
c.status(201);
return c.text('Created');
} else {
c.status(500);
return c.text('Something went wrong');
}
});
curl -X POST http://127.0.0.1:8787/add/二狗/24/一个傻蛋
成功输出
[
{ "id": 1, "author": "cheung", "age": "18", "body": "一只大帅逼" },
{ "id": 2, "author": "二狗", "age": "24", "body": "一个傻蛋" }
]
总的来说,Cloudflare D1 数据库是一个很有意思的尝试,可以让我们在workers和pages项目中使用serverless SQL数据库,并且可以很方便的与其他服务集成。但是比较蛋疼的是它读取写入每天只有10w的免费额度。做个小项目还阔以! 至于怎么玩就看你们的发挥了。