首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

构建基于 Rust 技术栈的 GraphQL 服务(2)- 查询服务第一部分

其中,笔者选择 Rust 生态中的 4 个 crate:tide、async-std、async-graphql、mongodb(bson 主要为 mongodb 应用)。...笔者在 2018-2019 年间,GraphQL 服务后端,一直使用的是 actix-web + juniper + postgresql 的组合,应用前端使用了 typescript + react.../gql touch mod.rs queries.rs mutations.rs 构建一个查询示例 首先,我们构建一个不连接数据库的查询示例:通过一个函数进行求合运算,将其返回给 graphql...tide 服务器的请求处理程序,因此必须返回 tide::Result。...同时,MongoDB 驱动程序中,支持的异步运行时 crate 为 tokio,我们其它如 tide 和 async-graphql 都是基于 async-std 异步库的,所以我们一并修改。

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mongoDB数据库的简单使用

    我的第一篇小文章,以前总是写Evernote。 mongodb属于非关系型数据库中的文档型数据库。...1、下载安装mongoDB,   文件自动 存放在这个目录下:C:\Program Files\MongoDB\Server\3.4\bin  (我用的win7) 2、在任意一个磁盘的根目录下创建一个文件夹...data,里面写入两个空文件夹:mongodb用来存储mongodb文件(把bin目录下的文件复制到这个文件夹下),另一个空文件夹mongo是用来存放数据库文件的,通过下面这行命令写入数据库文件:首先进入...4、mongodb可视化工具robomongo,跨平台的, 5、use 数据库名字 ,使用某个数据库,如果没有就新建, 6、db  查看当前所在数据库, 7、插入数据:db.student.insert...student是第一次使用,集合将自动创建。     数据库中不能直接插入数据,只能往集合(collections)中插入数据。

    50620

    MongoDB 使用 repairDatabase() 方法修护损坏的数据

    MongoDB 存储损坏的修复与防范在数据库管理中,存储损坏是一个不容忽视的问题,尤其是在进行 MongoDB 数据备份时。存储损坏不仅会导致备份失败,还可能导致数据丢失,甚至影响数据库的正常运行。...比如,使用以下命令可以对指定的 MongoDB 实例进行备份:mongodump --host localhost --port 27017 --out /path/to/backup该命令会将数据库的所有数据导出到指定的...对于包含大文件的数据库(如使用 GridFS 存储的文件),备份过程需要遍历多个集合和数据块。...执行修复操作的命令如下:db.repairDatabase()在执行后,如果修复过程顺利,MongoDB 将返回 {"ok" : 1},表示修复成功。...对于存储大量数据的 MongoDB 实例来说,硬件故障可能导致数据库文件的无法读取或部分损坏,尤其是在系统负载较大或磁盘使用率较高时。

    13020

    MongoDB数据库的基本使用总结

    与传统的关系型数据库不同的是,MongoDB不使用表格来存储数据,而是采用集合(Collection)的概念,同一个集合中可以存储不同的文档(Document),每个文档可以有自己的数据结构。...1.2 MongoDB特点 MongoDB的特点包括: 文档存储:MongoDB使用文档格式来存储数据,这个格式非常灵活,可以存储各种不同类型的数据。...高性能:MongoDB可以处理海量数据,并且具有出色的性能表现。它支持水平扩展,可以使用多台机器处理数据。 高可用性:MongoDB支持副本集和分片功能,可以自动处理数据备份和故障恢复。...动态查询:MongoDB使用类似于SQL的查询语言,同时还支持复杂的查询和聚合操作。 灵活性:MongoDB非常灵活,可以快速适应不同的需求和变化。...高可扩展性:MongoDB可以很容易地实现数据的水平扩展,可以承载数十亿条记录。 开放源代码:MongoDB是开放源代码的,可以免费使用,其中包括社区版和企业版。

    1.4K41

    构建基于 Rust 技术栈的 GraphQL 服务(2)- 查询服务第二部分

    本文为第二部分:连接 MongoDB,以及实现 GraphQL query 服务。 连接 MongoDB 创建 MongoDB 数据源 为了做到代码仓库风格的统一,以及扩展性。...提供 query 服务 Schema 中添加 MongoDB 数据源 前文小节我们创建了 MongoDB 数据源,欲在 async-graphql 中是获取和使用 MongoDB 数据源,由如下方法——...作为 async-graphql 的全局数据; 作为 Tide 的应用状态 State,优势是可以作为 Tide 服务器状态,进行原子操作; 使用 lazy-static.rs,优势是获取方便,简单易用...但是本应用中,我们仅需要 tide 作为一个服务器提供 http 服务,MongoDB 数据源也仅是为 async-graphql 使用。...最后,我们来执行 GraphQL 查询,看看是否取出了 MongoDB 中集合 users 中的所有数据。

    83120

    一系列令人敬畏的.NET核心库,工具,框架和软件

    SimpleContent – 用于ASP.NET Core的简单而灵活的内容和博客引擎,可以使用或不使用数据库。 Squidex – 无头CMS,基于MongoDB,CQRS和事件采购。...yessql – 适用于任何RDBMS的.NET文档数据库。 数据库驱动 cassandra-csharp-driver – 用于Apache Cassandra的DataStax C#驱动程序。...couchbase-lite-net – 用于.NET的轻量级,面向文档(NoSQL),可同步的数据库引擎。 MongoDB.Driver – MongoDB的.NET驱动程序。...Mongo.Migration – Mongo.Migration是为MongoDB C#驱动程序设计的,可以轻松,即时地迁移您的文档。不再有架构迁移的停机时间。只需编写小而简单的迁移。...无需定义类型,使用动态类型。数据存储在单个JSON文件中。具有身份验证,WebSocket通知,异步长时间运行操作,错误/延迟的随机生成以及实验性GraphQL支持。

    18.8K30

    python数据库-MongoDB的基本使用(54)

    二、MongoDB 删除数据库 语法:MongoDB 删除数据库的语法格式如下: db.dropDatabase() 删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名。...使用投影操作符指定返回的键。...Limit与Skip方法 1、MongoDB Limit() 方法 如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从...2、MongoDB Skip() 方法 我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。...sort() 排序方法 在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -

    76310

    使用MongoDB图表可视化您的数据

    Alger 译者:刘东华(Martin Liu) 将数据存储在数据库中是当今企业的基础。客户信息,订单历史记录,产品定价,物联网传感器数据等,都以备将来使用。...目前处于测试阶段的MongoDB图表提供了一种可视化MongoDB中数据的简便方法。您无需将数据移动到其他存储库,编写自己的代码或购买第三方工具。...同时也可以安全地共享在幕后使用的数据源。除非需要,否则销售部门的数据不必提供给Marketing。强大,并遵循MongoDB的安全设计是首要任务。...连接到MongoDB Charts服务器后,我们需要采取三个步骤: 添加数据源 创建仪表板 创建我们的图表 使用MongoDB图表分析爱彼迎数据 我已经建立了一个包含来自不同城市的一些Airbnb数据的数据库...它具有针对特定用例的一些强大功能,例如: 对您的数据进行临时分析 本地理解文档数据模型的好处 通过基于用户的共享和权限,可以轻松实现项目协作 它非常直观,非开发人员可以使用它来进行自助数据分析 ?

    1.3K20

    使用MongoDB图表可视化您的数据

    Alger 译者:刘东华(Martin Liu) 将数据存储在数据库中是当今企业的基础。客户信息,订单历史记录,产品定价,物联网传感器数据等,都以备将来使用。...目前处于测试阶段的MongoDB图表提供了一种可视化MongoDB中数据的简便方法。您无需将数据移动到其他存储库,编写自己的代码或购买第三方工具。...同时也可以安全地共享在幕后使用的数据源。除非需要,否则销售部门的数据不必提供给Marketing。强大,并遵循MongoDB的安全设计是首要任务。...连接到MongoDB Charts服务器后,我们需要采取三个步骤: 添加数据源 创建仪表板 创建我们的图表 使用MongoDB图表分析爱彼迎数据 我已经建立了一个包含来自不同城市的一些Airbnb数据的数据库...它具有针对特定用例的一些强大功能,例如: 对您的数据进行临时分析 本地理解文档数据模型的好处 通过基于用户的共享和权限,可以轻松实现项目协作 它非常直观,非开发人员可以使用它来进行自助数据分析

    1.9K20

    GraphQL+Koa2实现服务端API结合Apollo+Vue

    从这个意义上说,它是数据库无关的, 而且可以在使用 API 的任何环境中有效使用,我们可以理解为 GraphQL 是基于 API 之上的一 层封装,目的是为了更好,更灵活的适用于业务的需求变化 GraphQL...比如:字段冗余,扩展性差、无法聚合 api、无法 定义数据类型、网络请求次数多 GraphQL 的出现整好弥补了 RESTful APi 的不足 使用 GraphQL 的公司 目前已经有很多的公司在使用...然而 REST api 表 现得过于僵化,无法跟上访问它们的客户的快速变化的需求 RESTful API 不足 扩展性(多个终端需要返回不同的字段),单个 RESTful 接口返回数据越来越 臃肿。...三、Express中集成GraphQl 实现 Server API 3.1 安装mongodb造数据 使用mongodb做数据库演示,mac安装mongodb,brew install mongodb-community...     DB.find('user',{},{"title":1})    返回所有数据  只返回一列      DB.find('user',{},{"title":1},{   返回第二页的数据

    5.2K42

    构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(4)- 变更服务

    对于使用 Tide 框架做 GraphQL 开发的朋友,笔者有一个基于 tide、async-graphql,以及 mongodb 实现 GraphQL 服务的较完整项目模板,实现了如下功能: 用户注册...使用复杂对象类型 但有时,除了自定义结构体中的字段外,我们还需要返回一些计算后的数据。比如,我们要在邮箱应用中,显示发件人信息,一般是 username 这样的格式。...这样,既可以省去省去满篇的 getter、setter,还可以自定义对结构体字段计算后的返回数据。...再者,我们将 NewUser 结构体插入 MongoDB 数据库后,应当返回插入结果。因此,我们还需要开发一个根据 username 或者 email 查询用户的 GraphQL 服务。...MongoDB 数据库的 Rust 驱动使用,本文简要提及,不作详细介绍。

    1.6K31

    构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(3)- 重构

    前 2 篇文章中,我们初始化搭建了工程结构,选择了必须的 crate,并成功构建了 GraphQL 查询服务:从 MongoDB 中获取了数据,并通过 GraphQL 查询,输出 json 数据。...但是,虽然代码成功运行,却存在一些问题,如:对于 MongoDB 数据库的连接信息,应当采取配置文件存储;通用公用的代码,应当组织和抽象;诸如此类以便于后续扩展,生产部署等问题。...=v1 GRAPHIQL_PATH=v1i # 数据库配置 MONGODB_URI=mongodb://mongo:mongo@localhost:27017 MONGODB_BUDSHOME=budshome...作为 async-graphql 的全局数据; // 2. 作为 Tide 的应用状态 State; // 3....和 users/services.rs 代码中,all_users 函数/方法的返回值为冗长的 std::result::Result, async_graphql::Error>

    97020

    传统的关系型数据库与NOSQL数据库间的对应关系、MongoDB的安装以及使用、 MongoDB中针对于MapReduce的实现、MongoDB数据库的用户管理、使用Java操作MongoDB数据库

    2、本次预计讲解的知识点 1、 传统的关系型数据库与NOSQL数据库间的对应关系; 2、 MongoDB的安装以及使用; 3、 MongoDB中针对于MapReduce的实现; 4、 MongoDB数据库的用户管理...3、具体内容 MongoDB数据库是现在使用较为广泛的数据库,但是使用它都是需要一定的应用环境,在实际的开发环境之中,传统的关系型数据库依然是使用的主体,因为这样的数据属于结构化数据,而MongoDB这样的...MongoDB就是NoSQL概念中使用最为广泛的数据库,但是要想使用它之前,必须首先要清楚一些对应的概念: No....3.3、MongoDB数据库的基本使用 MongoDB数据库里面唯一需要注意的就是集合,以及数据的操作问题。 ...db.emp.find({empno:7369}) ; 但是默认情况下此时的查询会返回该文档中的全部内容,如果有需要也可以返回部分。

    1K20

    性能最佳实践:查询模式和分析

    此类分析对选择最合适的索引也有帮助。我们将在本系列的下一篇文章中介绍索引。 使用最新的驱动程序 MongoDB的驱动程序是由开发核心数据库的同一个团队设计的。...驱动程序的更新比数据库本身更频繁,通常每几个月会更新一次。如果可能,请始终使用最新版本的驱动程序,并安装适用于你所使用语言的本机扩展。...可以为测试和升级驱动程序开发一个标准的流程,这样升级就自然而然地成为流程的一部分了。 所有MongoDB驱动程序的列表,以及文档和源代码都可以在这里找到。...这包括操作执行时间、所扫描到的文档与返回的比率、是否使用了索引、是否进行了内存排序等等。可以对所显示的操作来选择特定的时间范围,从过去的15分钟到24个小时。...其他工具和使用程序 MongoDB数据库分析器会对一个正在运行的mongod实例上执行的操作及命令的详细信息进行收集。分析器收集的所有数据都将写入system.profile集合。

    1.5K20

    时间序列数据和MongoDB:第b三部分 - 查询,分析和呈现时间序列数据

    您可以使用本机工具(如 MongoDB Shell 命令行)和 MongoDB Compass(基于GUI的查询工具)。通过一系列以编程方式访问MongoDB数据 MongoDB驱动程序。...然后,BI Connector服务将这些查询转换为MongoDB查询语言(MQL),并将查询提交给MongoDB数据库。从MongoDB返回结果并将其展平为表格结构并发送回SQL语音客户端。...图9:Tableau中的数据源视图,显示从MongoDB BI Connector返回的信息 这些表实际上是我们的MongoDB中的集合。...图12:MongoDBSpark连接器 MongoDB 的 R 语言驱动程序为开发和统计人员提供了一流的体验,包括对MongoDB的本地语言,本机语言访问,企业身份验证以及对BSON数据类型的完全支持...图13:显示随时间变化的价格和每秒数据平滑的散点图 MongoDB的R驱动程序可通过CRAN R Archive获得。安装完成后,您可以连接到MongoDB数据库并返回可用于R计算的数据帧。

    3.7K20

    时间序列数据和MongoDB:第三部分 - 查询,分析和呈现时间序列数据

    您可以使用本机工具(如 MongoDB Shell 命令行)和 MongoDB Compass(基于GUI的查询工具)。通过一系列以编程方式访问MongoDB数据 MongoDB驱动程序。...然后,BI Connector服务将这些查询转换为MongoDB查询语言(MQL),并将查询提交给MongoDB数据库。从MongoDB返回结果并将其展平为表格结构并发送回SQL语音客户端。...图9:Tableau中的数据源视图,显示从MongoDB BI Connector返回的信息 这些表实际上是我们的MongoDB中的集合。...图12:MongoDBSpark连接器 MongoDB 的 R 语言驱动程序为开发和统计人员提供了一流的体验,包括对MongoDB的本地语言,本机语言访问,企业身份验证以及对BSON数据类型的完全支持...图13:显示随时间变化的价格和每秒数据平滑的散点图 MongoDB的R驱动程序可通过CRAN R Archive获得。安装完成后,您可以连接到MongoDB数据库并返回可用于R计算的数据帧。

    4.3K20
    领券