试玩 Cloudflare D1 数据库

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的免费额度。做个小项目还阔以! 至于怎么玩就看你们的发挥了。

发表评论🍎

网站已运行22天

© 2024 GoDom. All rights reserved.

writter by GoDom

not by AI