构建可扩展、高效的应用程序可能具有挑战性,对吧?特别是你的时间较少或参加黑客马拉松。如果我告诉你有一个后端解决方案可以简化这个过程怎么办?
最近我正在做一个项目,我第一次使用了 Convex 后端,你猜怎么着,感觉简直太棒了。
Convex 不仅仅是一个数据库;它是为现代开发人员量身定制的全面后端解决方案。它提供从 TypeScript 中的云功能到实时数据同步的一切,使您能够完全专注于前端代码。这使其越来越受欢迎。
是什么让它与众不同?
- 实时数据同步: 我最喜欢它的最令人惊奇的功能是,实时数据同步意味着需要忙于设置套接字 io,然后将其从后端发送到前端。相反,数据在客户端应用程序和数据库之间实时同步,使其成为协作或实时应用程序的理想选择。
- 无服务器函数: Convex 提供无服务器函数,称为“Convex 函数”,它允许您在不管理服务器的情况下运行后端逻辑。这些函数是用 JavaScript 或 TypeScript 编写的。
- 内置身份验证: 虽然有像 clerk、next auth 这样的服务可以与 Next.js typescript 配合使用,但 Convex 还支持用户身份验证,包括第三方提供商,因此您可以轻松地将用户登录添加到应用程序,而无需设置自定义身份验证系统。
- 可扩展数据库: Convex 的数据库可自动扩展,旨在支持高并发,因此可以处理大型数据集和流量高峰。
- 无模式数据模型: Convex 使用无模式数据模型,允许您存储灵活的数据结构,这有利于快速发展的项目。
这些是我个人使用的功能,还有更多功能,例如 ACID 事务、TypeScript 支持、安全和访问控制、自动缓存和优化,你绝对可以尝试。
现在让我们看看通过简单的 getGroupMembers 函数在普通后端和凸后端中的方法是如何的。
让我们使用 MongoDB 和 Node.js 构建一个后端函数
- 首先,我们首先通过典型的 JWT 验证用户的身份,对于错误,我们只返回 401 未经授权的响应。
const identity = await verifyToken(req.headers.authorization); if (!identity) { res.status(401).send("Unauthorized"); return; }
- 用户通过身份验证后,我们将检索对话详细信息。此步骤涉及通过提供的对话 ID 查询 MongoDB 中的对话集合。
const conversation = await db.collection("conversations").findOne({ _id: conversationId }); if (!conversation) { res.status(404).send("Conversation not found"); return; }
- 接下来,我们从用户集合中检索所有用户,并筛选 ID 与对话参与者匹配的用户。
const users = await db.collection("users").find().toArray(); const groupMembers = users.filter(user => conversation.participants.includes(user._id));
- 最后,我们将groupMembers列表返回给客户端。此数据仅包括参与指定对话的用户。
res.status(200).send(groupMembers);
这是上述代码片段的表示图
让我们使用 Convex 构建一个后端函数
- Convex 通过 ctx.auth.getUserIdentity() 提供内置的用户身份验证,可以轻松检查用户是否登录。如果用户未通过身份验证,我们会抛出 ConvexError,它会自动返回“Unauthorized”对客户的回应。
const identity = await ctx.auth.getUserIdentity(); if (!identity) { throw new ConvexError("Unauthorized"); }
- 使用 Convex,可以简化数据库查询。使用 ctx.db.query,我们通过过滤与提供的对话 ID 的匹配来检索对话。
const conversation = await ctx.db.query("conversations") .filter((q) => q.eq(q.field("_id"), args.conversationId)) .first(); if (!conversation) { throw new ConvexError("Conversation not found"); }
- Convex 允许我们使用 ctx.db.query("users").collect() 查询所有用户。然后,我们使用过滤器仅选择参与对话的用户。 Convex 的内置数据检索方法使管理集合变得更容易,而无需手动处理数据库连接。
const users = await ctx.db.query("users").collect(); const groupMembers = users.filter((user) => conversation.participants.includes(user._id));
- 仅此而已。由于 Convex 处理响应管理,因此只需从函数返回 groupMembers 即可将数据发送到客户端。
return groupMembers;
这是凸面如何处理后端的整体简化解释图 -
我如何在我的项目中使用 Convex
我刚刚使用 Next.js、TypeScript 以及最重要的 Convex 后端重新创建了 freeCodeCamp MERN stack Book Store 项目。
所以,如果您想了解如何使用 Convex 后端,那么您可以关注我的 github 项目,我已将我的技术堆栈从 MERN 堆栈转移到 NEXT.js TS Convex。
???-?????? (?????????) - 在这里查看
???-??????_?????? (????.?? ?? ??????) - 在这里查看
如果您愿意,您还可以访问我的 LinkedIn 帖子关于此?。
结论
简而言之,在传统的后端设置中,您需要手动处理身份验证、数据库连接、查询和错误,从而导致代码更加复杂和冗长。在 Convex 中,这些任务被抽象化,用最少的代码简化了身份验证、数据库查询和错误管理,从而实现更快的开发和更干净的代码。
快乐学习☺☺!!
以上是解锁后端简单性:使用 Convex 构建可扩展的应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

本文讨论了在浏览器中优化JavaScript性能的策略,重点是减少执行时间并最大程度地减少对页面负载速度的影响。

将矩阵电影特效带入你的网页!这是一个基于著名电影《黑客帝国》的酷炫jQuery插件。该插件模拟了电影中经典的绿色字符特效,只需选择一张图片,插件就会将其转换为充满数字字符的矩阵风格画面。快来试试吧,非常有趣! 工作原理 插件将图片加载到画布上,读取像素和颜色值: data = ctx.getImageData(x, y, settings.grainSize, settings.grainSize).data 插件巧妙地读取图片的矩形区域,并利用jQuery计算每个区域的平均颜色。然后,使用

本文讨论了使用浏览器开发人员工具的有效JavaScript调试,专注于设置断点,使用控制台和分析性能。

本文将引导您使用jQuery库创建一个简单的图片轮播。我们将使用bxSlider库,它基于jQuery构建,并提供许多配置选项来设置轮播。 如今,图片轮播已成为网站必备功能——一图胜千言! 决定使用图片轮播后,下一个问题是如何创建它。首先,您需要收集高质量、高分辨率的图片。 接下来,您需要使用HTML和一些JavaScript代码来创建图片轮播。网络上有很多库可以帮助您以不同的方式创建轮播。我们将使用开源的bxSlider库。 bxSlider库支持响应式设计,因此使用此库构建的轮播可以适应任何

数据集对于构建API模型和各种业务流程至关重要。这就是为什么导入和导出CSV是经常需要的功能。在本教程中,您将学习如何在Angular中下载和导入CSV文件

核心要点 利用 JavaScript 增强结构化标记可以显着提升网页内容的可访问性和可维护性,同时减小文件大小。 JavaScript 可有效地用于为 HTML 元素动态添加功能,例如使用 cite 属性自动在块引用中插入引用链接。 将 JavaScript 与结构化标记集成,可以创建动态用户界面,例如无需页面刷新的选项卡面板。 确保 JavaScript 增强功能不会妨碍网页的基本功能至关重要;即使禁用 JavaScript,页面也应保持功能正常。 可以使用高级 JavaScript 技术(


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver CS6
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

WebStorm Mac版
好用的JavaScript开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。