创建数据库
在命令行中执行完成之后,会在本地和远程创建数据库:
npx wrangler@latest d1 create prod-d1-tutorial
在cf中就可以看到数据库:
现在,您的Cloudflare帐户中有一个D1数据库,该数据库与您的Cloudflare Worker绑定。
复制命令输出的最后一部分并将其粘贴到Wrangler文件中。它应该看起来像这样:
接下来,您将在数据库中创建一个数据库表,使用Prisma ORM向D1发送查询。
创建数据表
先在本地创建一个数据库表来测试是否可行,需要在本地新建一个schema.sql文件,里面的内容如下:
-- CreateTable
CREATE TABLE "User" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"email" TEXT NOT NULL,
"name" TEXT
);
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
DROP TABLE IF EXISTS Customers;
CREATE TABLE IF NOT EXISTS Customers (CustomerId INTEGER PRIMARY KEY, CompanyName TEXT, ContactName TEXT);
INSERT INTO Customers (CustomerID, CompanyName, ContactName) VALUES (1, 'Alfreds Futterkiste', 'Maria Anders'), (4, 'Around the Horn', 'Thomas Hardy'), (11, 'Bs Beverages', 'Victoria Ashworth'), (13, 'Bs Beverages', 'Random Name');
然后在本地执行这个sql以创建数据表 :
npx wrangler d1 execute prod-d1-tutorial --local --file=./migrations/schema.sql
运行命令以验证是否存在这个表:
npx wrangler d1 execute prod-d1-tutorial --local --command="SELECT * FROM Customers"
集成到Hono中
绑定DB:
type Bindings = {
DB: D1Database
}
const app = new Hono<{ Bindings: Bindings }>()
查询数据:
// 查询数据
app.get('/users', async (c) => {
const { results } = await c.env.DB.prepare(
'SELECT * FROM Customers LIMIT 5'
).all()
return c.json(results)
})
结果:
同步数据到线上
您必须首先在将--local标志替换为--remote标志后重复数据库配置步骤,以便读取Worker数据。这将创建数据库表并将数据导入数据库的生产版本:
npx wrangler d1 execute prod-d1-tutorial --remote --file=./migrations/schema.sql
npx wrangler d1 execute prod-d1-tutorial --remote --command="SELECT * FROM Customers"
如果执行没有问题,线上就可以看到结果数据了:
删除数据库
删除数据库的操作只需要执行命令就可以了:
npx wrangler d1 delete prod-d1-tutorial