firebase - Firebase & GraphQL?

  显示原文与译文双语对照的内容
80 5

有谁在一起使用这两种?

我想一个将把firebase调用放在相关字段的解析器中,从组件道具中传递一些变量。

让我们知道你觉得 !

时间:原作者:0个回答

129 3

你可以用三种方法来回答你的问题。

1.Firebase & GraphQL

如果使用 Firebase,那么可以将的API映射映射到GraphQL查询和变体。

当然,你可以将 Firebase API封装到GraphQL解析器中,并进行调用。这是一个很好的例子:

const ref = path => firebase.database().ref(path)
const getValue = path => ref(path).once('value')
const mapSnapshotToEntities = snapshot => snapshot.val().map((value, id) => ({ id,.. .value }))
const getEntities = path => getValue(path).then(mapSnapshotToEntities)
const resolvers = {
 Author: {
 posts(author) {
 return getEntities('posts').then(posts => filter(posts, { authorId: author.id }))
 },
 },
 Post: {
 author(post) {
 return getEntities('authors').then(posts => filter(authors, { id: authorId }))
 },
 },
};

实际上,在这里做的是使用Firebase作为数据库,这会使你在解决方案中以一种关系方式查询数据,直到你想以一。不能在数据存储的顶部执行连接,你将在解决程序中为Firebase提供大量的循环请求。

大多数人使用Firebase的原因是它的实时性,并不是因为这个方面的数据关系建模工具。使用这种方法,你最好使用不同的数据源迁移到 GraphQL 。

2.GraphQL后端作为服务

考虑到你可以使用Firebase等产品,你可以考虑切换到GraphQL管理器。

3 。自承载 GraphQL

如果开放到自己的托管解决方案,使用自己的数据存储,也有许多好处。下面是几个大击球手:

  • 使用你自己的数据存储和可能多次满足你的应用程序特定需求的灵活性

  • 自定义查询和突变

  • 本机添加自定义逻辑,而不是通过microservices附加到API中的webhooks

  • 滚动你自己的认证和permissioning机制

  • 可能是成本较低的解决方案

原作者:
98 5

GraphQL: shines Firebase falls 。强大的数据建模。灵活高效的查询和开放规范都是GraphQL缺少Firebase的重要部分。

强大的数据建模功能

基于有限数据建模的Firebase受到了大量批评。基本上,数据结构为一个单一的。巨大的JSON,它多次声明相同的数据。当你需要更新数据时,什么时候看起来方便,你需要在每次更新数据时都要跟踪,因为你需要对同一数据的引用量进行手工。

另一方面,GraphQL中使用的数据结构非常直观和熟悉,因为它被建模为图形。我们可以使用语法模型轻松地描述我们的数据模型,称为模式,。对于 Twitter 应用程序,架构可以如下所示:

type Tweet {
 id: ID!
 title: String!
 author: User! @relation(name:"Tweets")
}
type User {
 id: ID!
 name: String!
 tweets: [Tweet!]! @relation(name:"Tweets")
}

这里我们定义了两个类型的TweetUser,它们具有一些标量属性和一个的one-to-many关系UserTweet单个数据项被称为节点- 并且用户 node 可以连接到多个tweet节点。这个数据结构既简单又灵活,除了来自Firebase的JSON方法之外。

灵活高效的查询

GraphQL的灵活查询能力是它的主要优点之一。查询是分层的,这意味着你可以指定镜像图结构的数据需求。在 Twitter 示例中,我们可能有一个查询来获取所有用户及其 tweet:

query {
 allUsers {
 id
 name
 tweets {
 title
 }
 }
}

注意,我们可以自由包含或者遗漏想要查询的字段,甚至可以跨关系查询。这意味着我们既不需要执行多个查询,也不需要查询不需要的数据- 使GraphQL查询非常高效。

向混合添加查询参数可以添加诸如定制顺序或者过滤器之类的特性,以获得强大的GraphQL API 。

所有这些在Firebase中都是不可能的。

实时数据

由于firebase社区的实时性使它变得非常流行,但由于GraphQL社区即将达成共识,因此,最大的firebase优势也将被废除。我推荐这个视频教程关于GraphQL订阅,以更好地理解基础概念

结束语

所以,为了回答你的问题:GraphQL在大多数方面超越 Firebases,成为首选选择。

If GraphQL,i,that,that,that,implement,implement,implement,implement,implement,check,check,check,check,check,check,等。

免责声明:我在Graphcool工作:)

原作者:
...