我无法设置反应apollo mongodb app =>使用mongo / mongoose / NO METEOR的旋转变压器

时间:2017-08-01 09:50:27

标签: mongodb reactjs mongoose apollo

我目前学习阿波罗,我是一名前端开发人员(角度1.5半年以上为背景) 我对mongodb和apollo(一个流星应用程序)的经验很少

我已经多次阅读过Apollo文档,使用关键字apollo,react,mongodb,resolvers以及各种组合解析Google ...(无结果)

我需要构建一个 React 应用程序(POC)来处理查询,突变和订阅,它会使用mongodb(或其他数据库)来保存数据,我指出这个一个,因为这只是我迄今为止合作过的一个。)

不能使用 Meteor

我的问题是,我无法找到适合我所需的所有情况(查询,子,变异)的 graphql解析器使用mongo的正确示例。

你能提供一些样板来帮助我理解机制吗?

感谢。

3 个答案:

答案 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回购链接。

这是回购。 仍有工作要做,特别是关于订阅,但它可能是一个好的开始

Link to Github repo