使用Nhost和Next.js构建Todo管理应用教程
前言
在现代Web开发中,全栈应用开发变得越来越流行。Nhost作为一个强大的后端即服务平台,为开发者提供了数据库、认证和文件存储等核心功能。本教程将指导你如何使用Nhost与Next.js框架构建一个功能完整的Todo管理应用。
项目概述
我们将构建一个具有以下功能的Todo管理应用:
- 用户可以通过Magic Link登录
- 用户可以创建、查看、更新和删除Todo项
- 每个Todo可以附加文件
- 用户可以标记Todo为已完成
第一部分:Nhost后端配置
1. 创建Nhost项目
首先需要在Nhost平台上创建一个新项目。创建完成后,系统会自动为你配置以下基础设施:
- 专用的PostgreSQL数据库
- 实时API接口
- 用户认证系统
- 文件存储服务
2. 创建todos表
在数据库管理界面中,我们需要创建一个名为todos
的表。这个表将存储所有的Todo项及其相关信息。
表结构设计如下:
id
: 唯一标识符created_at
和updated_at
: 时间戳title
: Todo标题completed
: 完成状态file_id
: 关联的文件IDuser_id
: 关联的用户ID
建议使用SQL语句创建表,这样可以确保所有字段和约束正确设置。
3. 设置权限规则
为了确保数据安全,我们需要为todos表设置适当的权限规则。主要针对user
角色的以下操作:
insert
: 用户可以插入新记录select
: 用户可以查询记录update
: 用户可以更新记录delete
: 用户可以删除记录
对于每个操作,我们需要设置行级权限,确保用户只能操作自己的数据。
4. 配置文件存储权限
同样需要为storage.files
表设置权限,允许用户:
- 上传文件
- 查看文件
- 删除文件
5. 启用Magic Link登录
在项目设置中启用Magic Link登录方式。这种无密码登录方式提供了良好的用户体验和安全性。
第二部分:Next.js前端开发
1. 创建Next.js应用
使用最新版本的Next.js创建一个新项目。建议选择JavaScript配置而非TypeScript,以简化教程。
2. 安装Nhost客户端库
安装Nhost提供的Next.js集成库,这个库包含了与Nhost后端交互所需的所有功能。
3. 配置Nhost客户端
创建一个Nhost客户端实例,配置你的项目子域名和区域信息。这些信息可以在Nhost仪表板中找到。
4. 实现登录组件
创建一个登录组件,允许用户通过输入邮箱接收Magic Link。这个组件将:
- 收集用户邮箱
- 调用Nhost的认证API发送Magic Link
- 处理可能的错误
- 提供加载状态反馈
5. 实现Todo管理组件
这是应用的核心组件,主要功能包括:
- 显示Todo列表
- 添加新Todo(可带附件)
- 标记Todo为已完成
- 删除Todo
- 查看附件
组件使用GraphQL与Nhost后端交互,处理所有数据操作。
6. 应用入口配置
在应用入口文件中,我们需要:
- 初始化Nhost提供者
- 检查用户会话状态
- 根据登录状态显示适当的内容(登录界面或Todo管理界面)
第三部分:运行与测试
完成所有开发后,可以启动开发服务器测试应用功能。确保测试以下场景:
- 未登录状态只能看到登录界面
- 输入邮箱后能收到Magic Link
- 点击Magic Link后能成功登录
- 登录后可以创建、查看、更新和删除Todo
- 可以成功上传和查看附件
- 可以正常登出
常见问题解决
- 权限问题:如果遇到操作被拒绝的错误,请检查数据库权限设置
- 文件上传失败:确保storage.files表的权限正确配置
- GraphQL查询错误:检查查询语法和变量类型
- Magic Link未收到:检查邮箱垃圾邮件文件夹,或尝试重新发送
总结
通过本教程,你已经学会了如何使用Nhost和Next.js构建一个功能完整的Todo管理应用。这个应用展示了现代Web开发的几个关键概念:
- 无服务器后端集成
- 无密码认证
- 文件上传与管理
- 实时数据交互
你可以基于这个基础继续扩展功能,如添加Todo分类、设置截止日期或实现多人协作等功能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考