当前位置: 首页 > news >正文

hono框架绑定cloudflare的d1数据库操作步骤

创建数据库

在命令行中执行完成之后,会在本地和远程创建数据库:

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.sqlnpx wrangler d1 execute prod-d1-tutorial --remote --command="SELECT * FROM Customers"

如果执行没有问题,线上就可以看到结果数据了:

删除数据库

删除数据库的操作只需要执行命令就可以了:

npx wrangler d1 delete prod-d1-tutorial
http://www.dtcms.com/a/267304.html

相关文章:

  • Redis基础的介绍与使用(一)(Redis简介以及Redis下载和安装)
  • Git 版本控制完全指南:从入门到精通
  • 【Halcon】WPF 自定义Halcon显示控件完整流程与 `OnApplyTemplate` 未触发的根本原因解析!
  • Web3 Study Log 003
  • 蓝牙墨水屏上位机学习(3)
  • Java 与 Vue 全栈开发:“一课一得“ 学习笔记系统实战
  • OneCode图表配置速查手册
  • CMake是什么
  • NV183NV185美光固态闪存NV196NV201
  • 供应链管理-采购管理:国际贸易及支付领域中常见的支持方式
  • FLUX.1-Kontext 高效训练 LoRA:释放大语言模型定制化潜能的完整指南
  • 软件版本FCCU(故障采集与控制单元)设计
  • 如何选择不会降低网站速度的WordPress主题
  • 动手实践OpenHands系列学习笔记11:现代开发流程
  • C#指针:解锁内存操作的底层密码
  • DVWA靶场通关笔记-验证码绕过reCAPTCHA(Medium级别)
  • 网安系列【6】之[特殊字符] SQL注入揭秘:从入门到防御实战指南
  • cloudflare配合github搭建免费开源影视LibreTV一个独享视频网站 详细教程
  • React Native 亲切的组件们(函数式组件/class组件)和陌生的样式
  • 百度开源文心一言4.5:论文解读和使用入门
  • 闲庭信步使用SV搭建图像测试平台:第三十二课——系列结篇语
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第5章 索引与算法
  • MySQL(118)如何使用SSL进行加密连接?
  • 前端进阶之路-从传统前端到VUE-JS(第三期-VUE-JS配套UI组件的选择)(Element Plus的构建)
  • vscode remote-ssh 拓展免密访问 linux虚拟机
  • 二分查找,乘法口诀表,判断闰年,判断素数,使用函数实现数组操作
  • CSS02:四种CSS导入方式
  • 动手实践OpenHands系列学习笔记7:前端界面设计
  • Flyway 介绍以及与 Spring Boot 集成指南
  • CppCon 2018 学习:Surprises In Object Lifetime