con*_*nor 1 mongoose mongodb node.js graphql graphql-js
是否可以同时利用 GraphQL 和 Mongoose?
到目前为止,我已经能够集成 GraphQL 和 Mongoose 来处理数据库填充,但我很难理解它如何检索数据,特别是具有嵌套引用的数据。
考虑这个模式:
const fooSchema = new Schema({
name: { type: 'String', required: true },
bar: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Bar',
required: false,
}],
});
Run Code Online (Sandbox Code Playgroud)
Bar 模式本质上是相同的,只有一个“name”字段。
是否可以运行 GraphQL 查询来使用“bar”中的引用填充数据?
目前,我们正在使用 GraphQL-Tools 来创建 typeDefs、Mutations 和 Queries,如下所示:
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});
Run Code Online (Sandbox Code Playgroud)
最后一个查询指令如下所示:
const allFoos = async (root, data) => {
return await Foo.find({});
};
Run Code Online (Sandbox Code Playgroud)
我可以更改查询指令以使用 .populate() 来获取 Bar,但这实际上并没有最终填充结果,我认为这是因为 typeDef 的设置方式所致。
那么是否有可能让这两个概念一起发挥作用呢?两者同时使用是否有意义?
正如他们所描述的 GraphQL:
GraphQL 是 API 的查询语言,也是使用您为数据定义的类型系统执行查询的服务器端运行时。GraphQL 不依赖于任何特定的数据库或存储引擎,而是由现有代码和数据支持。
猫鼬在哪里
编写 MongoDB 验证、转换和业务逻辑样板是一件很麻烦的事。这就是我们写 Mongoose 的原因
Monogoose 使用 mongodb 验证,而 graphql 是 API 的查询语言。
您可以从此处阅读有关使用 Node、Express 和 Mongoose 设置简单 GraphQL 服务器的基本示例。
这两者是完全不同的。Mongoose 在您对数据库执行任何操作时工作,而 grpgl 在您调用 API 时出现。Graphql 验证您的 API 输入参数和返回参数。如果您将这两个添加到单个应用程序中。效果会很好。
归档时间: |
|
查看次数: |
1114 次 |
最近记录: |