当前位置: 首页 > 知识库问答 >
问题:

利用GraphQL和Mongoose

鲜于宜修
2023-03-14

是否可以同时利用GraphQL和Mongoose?

到目前为止,我已经能够集成GraphQL和Mongoose来处理填充数据库,但是我很难理解这如何工作来检索数据,特别是具有html" target="_blank">嵌套引用的数据。

考虑这个模式:

const fooSchema = new Schema({
  name: { type: 'String', required: true },
  bar: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Bar',
    required: false,
  }],
});

Bar模式本质上是相同的,只有一个“名称”字段。

是否可以运行GraphQL查询,用“bar”中的引用填充数据?

目前,我们正在使用GraphQL工具创建TypeDef、突变和查询,如下所示:

const typeDefs = `
  type Foo {
    name: String!,
    bars:[Bar] 
  }
  type Bar {
    _id: ID,
    name: String,
  }

  type Query {
    allFoos: [Foo!]!
    foo(_id: ID!): Foo
  }

  type Mutation {
    ...
  }
`;
module.exports = makeExecutableSchema({typeDefs, resolvers});

最后是一个查询指令,看起来像这样:

const allFoos = async (root, data) => {
  return await Foo.find({});
};

我可以将查询指令更改为使用。populate()来获取Bar,但这实际上并没有填充结果,我认为这是因为typedef的设置方式。

那么有没有可能让这两个概念协同工作呢?两者都用有意义吗?

共有1个答案

奚曦哲
2023-03-14

正如他们描述的GraphQL:

GraphQL是API的查询语言,也是服务器端运行时,用于使用为数据定义的类型系统执行查询。GraphQL不绑定到任何特定的数据库或存储引擎,而是由您现有的代码和数据支持。

猫鼬在哪里

编写MongoDB验证、转换和业务逻辑样板是一个拖累。所以我们才写了猫鼬

Monogoose使用mongodb验证,而graphql是API的查询语言。

您可以从这里阅读一个关于使用Node、Express和Mongoose设置简单GraphQL服务器的基本示例。

这两者是完全不同的。猫鼬在你对数据库执行任何操作时都能工作,而当你调用应用编程接口时,格拉夫会出现在画面中。Graphql验证API输入参数和返回参数。如果您在单个应用程序中添加这两个。它会工作得很好。

  1. Mongoose将验证您的db操作
  2. GraphQL将验证API输入和输出参数
 类似资料:
  • 我按照Apollo的文档在客户端和服务器上设置GraphQL订阅,虽然我已经完成了90%,但我不知道如何设置订阅通道以及如何将突变连接到这些通道,以便每当突变发生时,服务器都会将新数据推送到客户端。(对于内容,我正在制作一个Reddit克隆,人们可以在其中发布主题,其他人可以对其发表评论。所以当你看到“Topics”或“TopicList”时,把它们想象成帖子。) 到目前为止,我已经成功地为订阅设

  • 我正在试验graphql,并使用graphql瑜伽创建了一个简单的服务器。我的Mongoose产品模型查询我的数据库,两个解析器按预期返回数据。到目前为止,一切顺利,我很高兴这是多么容易。然而,我有一个问题。我正在尝试添加一种方法来对来自graphQL的结果进行分页。 1) 向查询类型添加限制参数。 2) 通过解析器中的参数访问参数 我可以在我的解析器中使用args.limit参数并使用它来改变M

  • 本章将会介绍如何使用python去构建一个简单的web扫描器,并且写一个简单的exp。有些时候如果组织会发布出来一些漏洞测试的POC,然后使用者可以使用这些poc去检查自己系统的漏洞,但是在这种情况下,如果是等poc发布出来早以为时已晚! 在第5章的时候告诉了大家基本的web请求,这一章我们讲两个新的内容: 检测特定的服务器列表. 利用一个Oracle的本地包含漏洞. Web扫描 下面的这个脚本使

  • 我想知道每种方法的利弊是什么。例如,在graphQL中包含所有内容似乎有点多余,因为我们将在每个服务中复制模式的部分。另一方面,我们使用GraphQL来避免一些REST缺陷。我们担心拥有RESTendpoint会抵消从GQL获得的优势。 有人遇到过类似的困境吗?我们都没有使用GraphQL的经验,所以这里是否有一些明显的利弊我们可能会遗漏? 提前道谢!

  • 我想为将来的项目测试GraphQL。该项目将使用Spring Boot、Spring Security和GraphQL。因此,我在IntelliJ中使用在Spring Initializr中的build创建了一个新的Spring Boot应用程序。Spring Boot版本当然是最新的(2.0.3.release),现在我添加了GraphQL和GraphIQL的依赖关系。 为了测试这一点,我运行了

  • 我的项目计划使用SSO(可能使用Gluu或Auth0,…)并且正在考虑将GraphQL应用到我们的API中。 乍一看,这两个应该很容易兼容,因为它们在不同的层上工作。但是我仍然想听听有这两个方面经验的人在将它们应用于项目时是否有任何问题、考虑因素或指导方针?