使用xxxbase应付CRUD后端任务

很多的后端CRUD开发任务都是毫无意义的, 如果使用firebase/supabase/pocketbase这些工具快速应付这些任务才是重要的.

如果是一位研究生, 在面对导师的垃圾横向的时候, 这种工具会起到很好的帮助.(我们的目的是让代码可以正常运行)
如果希望快速开发DEMO, 展示项目效果也可以使用.
面对全栈开发者, 我想学***xbase是很好的一个提升效率的过程.

supabase

由微软开源的firebase替代方案, 项目地址是 https://github.com/supabase/supabase/

采用typescript编写实现, 支持的SDK种类丰富, 稳定适合企业使用. 功能稳定, 文档丰富.

pocketbase

由非盈利开发, 使用GO编写的, 项目地址 https://github.com/pocketbase/pocketbase/ . 核心是单个文件实现需要的后端CRUD功能(也就是简单易用, 但是面对大项目可能存在问题)

这已经是一个拥有40+k stars的项目, 具有规模
数据集采用sqlite(并且没有计划适配别的数据库)

  • 目前支持的SDK较少, 只有JS和Dart的支持.
  • 模板版本还是0.xxx, 还没有到1.0正式版本, 也就是说, 功能不够稳定, 不适合企业使用.

使用pocketbase解决CRUD任务

pocketbase的核心是一个可执行文件使用全部功能, 小巧(但是目前还没有稳定版本, 所以谨慎使用, 目前不适合生产环境)

即使是docker image也只有50MB大小

构建镜像

使用docker build -t pocketbase .构建镜像

FROM alpine:latest

ARG PB_VERSION=0.26.6

RUN apk add --no-cache \
    unzip \
    ca-certificates

# download and unzip PocketBase
ADD https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_amd64.zip /tmp/pb.zip
RUN unzip /tmp/pb.zip -d /pb/

# uncomment to copy the local pb_migrations dir into the image
# COPY ./pb_migrations /pb/pb_migrations

# uncomment to copy the local pb_hooks dir into the image
# COPY ./pb_hooks /pb/pb_hooks

EXPOSE 8080

# start PocketBase
CMD ["/pb/pocketbase", "serve", "--http=0.0.0.0:8080"]

这是官方提供的dockerfile, 可以去官方的文档里面查看

运行

使用docker run -it --rm -p 8080:8080 pocketbase:latest运行项目

注册管理员

点击日志中出现的网址, 注册对应的管理员账号

注册成功之后会自动跳转管理界面

目前在管理用户界面, 不存在用户

创建用户

在管理面板就可以创建用户.

使用SDK

注册用户

这里使用JS的SDK为例子进行演示.

import PocketBase from 'pocketbase';

const pb = new PocketBase('http://0.0.0.0:8080');

// example create data
const data = {
    "password": "12345678",
    "passwordConfirm": "12345678",
    "email": "test@example.com",
    "name": "test"
};

const record = await pb.collection('users').create(data);

// (optional) send an email verification request
// await pb.collection('users').requestVerification('test@example.com');

注册用户的本质是增加一个新的记录

成功增加一个

登陆

为什么需要登陆? 因为有些操作需要在鉴权的基础上进行.(例如对于用户的查询操作)

import PocketBase from 'pocketbase';

const pb = new PocketBase('http://0.0.0.0:8080');

...

const authData = await pb.collection('users').authWithPassword(
    'YOUR_EMAIL',
    'YOUR_PASSWORD',
);

// after the above you can also access the auth data from the authStore
console.log(pb.authStore.isValid);
console.log(pb.authStore.token);
console.log(pb.authStore.record.id);

// "logout"
pb.authStore.clear();

查询

以下是一个针对用户的查询操作

  • 注意这个操作需要先登陆用户.
// fetch a paginated records list
const resultList = await pb.collection('users').getList(1, 30, {
    filter: 'name="test"',
});

console.log(resultList);


查询成功

这就是数据表的规则
可以设置仅超级用户可用

更新和删除

都需要使用record id进行操作.

使用supabase解决CRUD任务

这里使用supabase作为样例来解决增删查改的任务, 因为supabase生态完善, 功能稳定, 更加适合.

  • 开摆了, supabase是怎么做到光代码就有1G的, 我都不敢想下载了node_modules黑洞之后会变成什么样, 有那么一点点歧视TS后端了.

总结

针对简单的CRUD任务, 并且如果只需要能跑, 这是真的好用.

FQ&A

Q: 使用这些工具进行开发的时候, 开发的自由度是否存在问题?
A: 明显存在问题, 但是, 自由度换来了90%任务开发的便捷

Q: 是否存在性能问题? 例如supabse是使用TS编写的后端服务.
A: 首先, 一般项目不会面对高并发的场景, QPS撑死不超过10的情况下, 性能问题无关紧要, 开发便捷才重要, 先完成任务. 实际上也不存在性能问题, 这些工具由各位大佬实现, 面对绝大多数场景不存在性能问题.(性能问题不重要)

原创作者: xuhe2 转载于: https://www.cnblogs.com/xuhe2/p/18822102
内容概要:本报告探讨了AI赋能汽车行业智能化转型的技术创新,涵盖了研发设计智能化、用户运营智能化和座舱体验智能化三大核心场景。通过解析智己汽车的实践,展示了AI在压缩研发周期、提升销售转化率和优化座舱体验等方面的实际价值。报告指出,AI技术正深刻改变汽车产业的价值链,推动从“机械制造”向“移动智能体”的转变,并提出了未来汽车行业智能化的发展趋势,包括更个性化的用户体验、跨产业融合以及数据安全和隐私保护的重要性。 适合人群:汽车行业从业者、技术研发人员、市场营销人员、政策制定者及相关领域的研究者。 使用场景及目标:①理解AI技术在汽车研发设计中的应用,如生成式设计、仿真优化和智能测试;②掌握AI在用户运营中的应用,如智能内容生成、销售辅助和数据闭环优化;③了解AI在座舱体验中的应用,如多意图服务编排、情感计算和端到端语音链路优化;④探讨未来汽车行业智能化的发展方向,包括个性化服务、产业融合和数据安全。 其他说明:本报告不仅提供了理论和技术层面的分析,还结合了具体的落地实践案例,为企业在智能化转型过程中提供了可复用的AI赋能框架。报告强调了政策支持、技术创新和产业协同在推动汽车行业智能化转型中的重要作用,旨在为行业提供有价值的参考和指导。
<think>好的,用户想了解CRUD后端开发的相关知识或教程,并且需要示例代码。首先,我需要确定CRUD的基本概念,确保自己理解正确。CRUD指的是创建、读取、更新和删除,是数据库操作的四个基本功能。根据引用[2],CRUD操作是数据库基本操作的总称,所以用户可能想了解如何在后端实现这些操作。 接下来,用户提到了教程和示例代码,可能需要一个具体的案例。引用[1]提供了一个使用Spring Boot构建RESTful API的Java后端案例,这应该可以作为示例的基础。同时,引用[3]提到了Java后端开发规范,包括日志记录和代码管理,这些内容可能在编写示例代码时需要注意。 用户的问题可能需要分步骤解答,先解释CRUD的概念,然后展示如何实现。考虑到用户可能需要不同语言的示例,比如Java和Node.js,但引用中提供的例子是Java的Spring Boot,所以优先使用Java示例。同时,引用[2]提到了Node.js的特点,可能用户对Node.js也有兴趣,但当前问题主要是CRUD后端开发,所以可能需要专注在Java上,但可以适当补充其他语言的信息。 需要确保回答结构清晰,符合用户可见层的指导,即分步骤、结构清晰,并引用相关参考资料。示例代码需要符合规范,比如引用[3]中的日志规范和代码删除要求,所以在示例代码中可能需要加入日志记录,并且避免保留无用代码。 此外,用户可能需要了解相关的工具和框架,比如Spring Boot、MyBatis等,这些在实现CRUD时常用。还需要考虑数据库的选择,比如MySQL,并说明如何配置数据库连接。 最后,生成相关问题,引导用户进一步学习,比如性能优化、安全措施、其他框架实现等。确保问题与CRUD后端开发相关,并覆盖用户可能感兴趣的扩展话题。</think>### CRUD后端开发教程与示例 #### 一、CRUD基础概念 CRUD是数据库操作的四个核心功能,包含: - **C (Create)**:插入新数据,如用户注册 - **R (Read)**:查询数据,如获取用户信息 - **U (Update)**:修改数据,如更新用户手机号 - **D (Delete)**:删除数据,如注销用户账户 这些操作通常通过RESTful API实现,遵循HTTP协议规范(GET/POST/PUT/DELETE)[^2]。 #### 二、Spring Boot实现示例(Java) 以下示例基于引用[1]的Spring Boot案例,实现用户管理API: 1. **项目结构** ``` src/ ├── main/ │ ├── java/com/example/demo/ │ │ ├── controller/UserController.java │ │ ├── model/User.java │ │ ├── repository/UserRepository.java │ │ └── DemoApplication.java │ └── resources/application.properties ``` 2. **实体类定义** ```java // User.java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // 省略getter/setter } ``` 3. **REST控制器** ```java // UserController.java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserRepository userRepository; // 创建用户 @PostMapping public User createUser(@RequestBody User user) { return userRepository.save(user); } // 查询所有用户 @GetMapping public List<User> getAllUsers() { return userRepository.findAll(); } // 更新用户 @PutMapping("/{id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值