主要观点:作者用 Typesense 构建了一个名为 Taut 的聊天应用,虽遵循了文档中不将其用作主数据存储的建议,但展示了其在某些方面的优缺点。
关键信息:
- 构建了单页聊天应用 Taut,使用传统客户端-服务器方式,通过 htmx 实现交互,后端使用 Go 语言和 Typesense 库。
- 介绍了数据模型,包括用户和消息的结构体,以及创建数据库模式和记录的过程。
- 展示了登录、聊天等视图的实现,以及如何通过查询 Typesense 获取数据并填充视图。
- 指出在消息检索和搜索方面存在安全漏洞,如允许注入攻击,需使用 scoped search keys 来防范。
- 总结了不将 Typesense 用作主数据存储的原因,如查询灵活性、缺乏参数化查询、缺乏事务、数据耐久性等。
重要细节: - 登录界面无密码要求,登录后可看到聊天界面,包括不同用户之间的聊天记录。
- 在创建记录时,判断用户是否存在的过程较繁琐,且未找到 create-if-not-exists 的操作。
- 消息检索和搜索功能存在安全漏洞,可通过精心构造的 handle 查看他人聊天记录。
- Typesense 存储在内存中,默认未将数据写入磁盘,可通过配置启用磁盘写入和高可用性集群。
- 作者希望有机会以正确的方式使用 Typesense,其搜索功能在搜索文档方面表现不错。
- 作者提供了 coaching 服务链接,帮助软件工程师提升能力。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。