我目前学习阿波罗,我是一名前端开发人员(角度1.5半年以上为背景) 我对mongodb和apollo(一个流星应用程序)的经验很少
我已经多次阅读过Apollo文档,使用关键字apollo,react,mongodb,resolvers以及各种组合解析Google ...(无结果)
我需要构建一个 React 应用程序(POC)来处理查询,突变和订阅,它会使用mongodb(或其他数据库)来保存数据,我指出这个一个,因为这只是我迄今为止合作过的一个。)
我不能使用 Meteor 。
我的问题是,我无法找到适合我所需的所有情况(查询,子,变异)的 graphql解析器使用mongo的正确示例。
你能提供一些样板来帮助我理解机制吗?
感谢。
答案 0 :(得分:0)
如果您不想阅读一些教程。你可以看看githunt项目。它是一个带有查询,突变和订阅的apollo-graphql实现。它不使用mongoDB,但这应该是一个很容易的改变。
服务器:https://github.com/apollographql/GitHunt-API/tree/master/api
客户:https://github.com/apollographql/GitHunt-React
干杯
答案 1 :(得分:0)
我认为graphqly就是你的答案。
import graphly from "graphqly";
const gBuilder = graphly.createBuilder();
// define types, inputs ... (in any order)
gBuilder.type("Products").implements("List").def(`
products: [Product]!
`);
gBuilder.type("Product").def(`
id: ID!
name: String!
link: String
price: Int
`);
// we're too lazy to define a separate input, so we can `extend` other structure
gBuilder.input("ProductInput").ext("Product");
gBuilder.enum("ProductOrder").def(`
PRICE_DESCENDING
PRICE_ASCENDING
NEWEST
`);
// define interface `List`
gBuilder.iface("List").def(`
total: Int!,
offset: Int!,
limit: Int!,
# number of items actually in this window
size: Int!
`);
gBuilder.query(`
products(limit: Int = 20, offset: Int = 0, filter: ProductFilter): Products
`)
.resolve((root, args, context) => {
// your resolver here
// `this` is binded to the current Query instance
});
答案 2 :(得分:0)
所以,对于服务器而言,这只是mongo / mongoose的良好开端:
https://github.com/khadorkin/apollo-server-mongoose
我已经加强了这一点,我会在几天内提供github回购链接。
这是回购。 仍有工作要做,特别是关于订阅,但它可能是一个好的开始