我无法使用 mongo / mongoose / NO METEOR 设置 react apollo mongodb app => 解析器
Posted
技术标签:
【中文标题】我无法使用 mongo / mongoose / NO METEOR 设置 react apollo mongodb app => 解析器【英文标题】:I can't setup a react apollo mongodb app => resolvers with mongo / mongoose / NO METEOR 【发布时间】:2018-01-08 03:03:07 【问题描述】:我目前正在学习Apollo,我是一名前端开发人员(后台半年多角1.5) 我对 mongodb 以及 apollo(通过流星应用程序)的经验很少
我已经阅读了好几遍 Apollo 文档,用关键字 apollo、react、mongodb、resolvers 解析了 Google,各种组合......(没有结果)
我需要构建一个小的 React 应用程序 (POC),它处理 查询、突变和订阅,它将使用 mongodb(或其他数据库,我指出这一点)持久保存数据一个,因为这只是我迄今为止合作过的一个)。
我不能使用Meteor。
我的问题是,我找不到 graphql resolver 在我需要的所有情况下(查询、子、变异)使用 mongo 的合适示例。
您能否提供一些样板,以帮助我了解机制?
谢谢。
【问题讨论】:
【参考方案1】:如果您不想阅读一些教程。你可以看看 githunt 项目。它是一个带有查询、突变和订阅的 apollo-graphql 实现。它不使用 mongoDB,但这应该是一个简单的更改。
服务器:https://github.com/apollographql/GitHunt-API/tree/master/api
客户:https://github.com/apollographql/GitHunt-React
干杯
【讨论】:
我确实尝试过,但有些需要重写的部分是我目前的技能。我发布了一个答案,该答案指向一个样板文件(不是来自我),供可能需要相同代码才能正常启动的人使用。还是谢谢!【参考方案2】:我认为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
);
【讨论】:
感谢您的回答,尽管我正在寻找更完整的东西(请参阅我的回答)。不过还是谢谢!【参考方案3】:所以,对于只有 mongo / mongoose 的服务器部分来说,这是一个好的开始:
https://github.com/khadorkin/apollo-server-mongoose
我已对此进行了增强,我将在几天后提供指向 github 存储库的链接。
这里是回购。 仍有工作要做,特别是关于订阅,但这可能是一个好的开始
Link to Github repo
【讨论】:
以上是关于我无法使用 mongo / mongoose / NO METEOR 设置 react apollo mongodb app => 解析器的主要内容,如果未能解决你的问题,请参考以下文章
我无法使用 mongo / mongoose / NO METEOR 设置 react apollo mongodb app => 解析器
Mongo (+Mongoose) 错误:无法找到 $geoNear 查询的索引
无法使用带有 X509 用户的 mongoose 连接到 Mongo DB
无法通过 Mongo(mongoose)中的点符号搜索子文档 [重复]