搜索
首页web前端js教程解锁后端简单性:使用 Convex 构建可扩展的应用程序

构建可扩展、高效的应用程序可能具有挑战性,对吧?特别是你的时间较少或参加黑客马拉松。如果我告诉你有一个后端解决方案可以简化这个过程怎么办?

最近我正在做一个项目,我第一次使用了 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;
  }

  • 接下来,我们从用户集合中检索所有用户,并筛选 I​​D 与对话参与者匹配的用户。
  const users = await db.collection("users").find().toArray();
  const groupMembers = users.filter(user => conversation.participants.includes(user._id));

  • 最后,我们将groupMembers列表返回给客户端。此数据仅包括参与指定对话的用户。
  res.status(200).send(groupMembers);

这是上述代码片段的表示图

Unlocking Backend Simplicity: Building Scalable Apps with Convex

让我们使用 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;

这是凸面如何处理后端的整体简化解释图 -

Unlocking Backend Simplicity: Building Scalable Apps with Convex

我如何在我的项目中使用 Convex

我刚刚使用 Next.js、TypeScript 以及最重要的 Convex 后端重新创建了 freeCodeCamp MERN stack Book Store 项目。

所以,如果您想了解如何使用 Convex 后端,那么您可以关注我的 github 项目,我已将我的技术堆栈从 MERN 堆栈转移到 NEXT.js TS Convex。

  • ???-?????? (?????????) - 在这里查看

  • ???-??????_?????? (????.?? ?? ??????) - 在这里查看

如果您愿意,您还可以访问我的 LinkedIn 帖子关于此?。

结论

简而言之,在传统的后端设置中,您需要手动处理身份验证、数据库连接、查询和错误,从而导致代码更加复杂和冗长。在 Convex 中,这些任务被抽象化,用最少的代码简化了身份验证、数据库查询和错误管理,从而实现更快的开发和更干净的代码。

快乐学习☺☺!!

以上是解锁后端简单性:使用 Convex 构建可扩展的应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在JavaScript中替换字符串字符在JavaScript中替换字符串字符Mar 11, 2025 am 12:07 AM

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

如何创建和发布自己的JavaScript库?如何创建和发布自己的JavaScript库?Mar 18, 2025 pm 03:12 PM

文章讨论了创建,发布和维护JavaScript库,专注于计划,开发,测试,文档和促销策略。

如何在浏览器中优化JavaScript代码以进行性能?如何在浏览器中优化JavaScript代码以进行性能?Mar 18, 2025 pm 03:14 PM

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

jQuery矩阵效果jQuery矩阵效果Mar 10, 2025 am 12:52 AM

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

如何使用浏览器开发人员工具有效调试JavaScript代码?如何使用浏览器开发人员工具有效调试JavaScript代码?Mar 18, 2025 pm 03:16 PM

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

如何构建简单的jQuery滑块如何构建简单的jQuery滑块Mar 11, 2025 am 12:19 AM

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

如何使用Angular上传和下载CSV文件如何使用Angular上传和下载CSV文件Mar 10, 2025 am 01:01 AM

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

用JavaScript增强结构标记用JavaScript增强结构标记Mar 10, 2025 am 12:18 AM

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

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

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

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SecLists

SecLists

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