标签: firebase-realtime-database

255
推荐指数
4
解决办法
17万
查看次数

查询基于Firebase中的多个where子句

{
"movies": {
    "movie1": {
        "genre": "comedy",
        "name": "As good as it gets",
        "lead": "Jack Nicholson"
    },
    "movie2": {
        "genre": "Horror",
        "name": "The Shining",
        "lead": "Jack Nicholson"
    },
    "movie3": {
        "genre": "comedy",
        "name": "The Mask",
        "lead": "Jim Carrey"
    }
  }  
 }
Run Code Online (Sandbox Code Playgroud)

我是Firebase的新手.我如何可以检索从上面的数据结果,其中genre = 'comedy'lead = 'Jack Nicholson'

我有什么选择?

firebase firebase-realtime-database

227
推荐指数
3
解决办法
15万
查看次数

Cloud Firestore和Firebase实时数据库之间有什么区别?

谷歌刚刚发布了Cloud Firestore,这是他们针对应用的新文档数据库.

我一直在阅读文档但我没有看到Firestore和Firebase DB之间存在很多差异.

重点是Firestore使用的文档和集合与Firebase相比,可以轻松使用查询,Firebase是一个带有JSON基础的传统noSQL数据库.

我想更多地了解他们的差异或用法,或者Firestore是否刚刚取代Firebase DB?

firebase google-cloud-platform firebase-realtime-database google-cloud-firestore

198
推荐指数
4
解决办法
5万
查看次数

编译未能完成:程序类型已存在:com.google.android.gms.internal.measurement.zzabn

编译我的项目时,我收到以下错误消息:

Program type already present: com.google.android.gms.internal.measurement.zzabn Message{kind=ERROR, text=Program type already present: com.google.android.gms.internal.measurement.zzabn, sources=[Unknown source file], tool name=Optional.of(D8)}
Run Code Online (Sandbox Code Playgroud)

要么

D8: Program type already present: com.google.android.gms.internal.measurement.zzabo
Run Code Online (Sandbox Code Playgroud)

使用Gradle Log中的以下堆栈跟踪

at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)     
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)   
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212)\\nat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) …
Run Code Online (Sandbox Code Playgroud)

java android firebase android-studio firebase-realtime-database

145
推荐指数
4
解决办法
6万
查看次数

使用Firebase按名称属性获取用户

我正在尝试创建一个应用程序,我可以在特定用户帐户中获取/设置数据,我受到Firebase的诱惑.

我遇到的问题是,当我的结构如下所示时,我不知道如何定位特定用户数据:

我的数据结构由下面的文字描述.

online-b-cards
  - users
    - InnROTBVv6FznK81k3m
       - email: "hello@hello"
       - main:  "Hello world this is a text"
       - name:  "Alex"
       - phone: 12912912
Run Code Online (Sandbox Code Playgroud)

我环顾四周,当他们给出一些随机哈希作为他们的ID时,我真的找不到任何关于如何访问个人数据的信息.

我如何根据他们的名字获取个人用户信息?如果有更好的方法,请告诉我!

firebase firebase-realtime-database

126
推荐指数
2
解决办法
8万
查看次数

Firebase云功能非常慢

我们正在开发一个使用新的firebase云功能的应用程序.目前正在发生的事情是将事务放入队列节点.然后该函数删除该节点并将其放入正确的节点.由于能够脱机工作,因此已实施.

我们目前的问题是功能的速度.该功能本身需要大约400毫秒,所以没关系.但有时功能需要很长时间(大约8秒),而条目已经添加到队列中.

我们怀疑服务器需要时间来启动,因为当我们在第一次执行后再次执行操作时.它花费的时间更少.

有什么方法可以解决这个问题吗?在这里,我添加了我们的功能代码.我们怀疑它没有任何问题,但我们添加它以防万一.

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const database = admin.database();

exports.insertTransaction = functions.database
    .ref('/userPlacePromotionTransactionsQueue/{userKey}/{placeKey}/{promotionKey}/{transactionKey}')
    .onWrite(event => {
        if (event.data.val() == null) return null;

        // get keys
        const userKey = event.params.userKey;
        const placeKey = event.params.placeKey;
        const promotionKey = event.params.promotionKey;
        const transactionKey = event.params.transactionKey;

        // init update object
        const data = {};

        // get the transaction
        const transaction = event.data.val();

        // transfer transaction
        saveTransaction(data, transaction, userKey, placeKey, promotionKey, transactionKey);
        // remove from queue
        data[`/userPlacePromotionTransactionsQueue/${userKey}/${placeKey}/${promotionKey}/${transactionKey}`] = null; …
Run Code Online (Sandbox Code Playgroud)

node.js firebase firebase-realtime-database google-cloud-functions

109
推荐指数
4
解决办法
2万
查看次数

在firebase上构建数据的最佳方法是什么?

我是firebase的新手,我想知道在其上构建数据的最佳方法是什么.

我有一个简单的例子:

我的项目有申请人和申请.1申请人可以有几个申请.如何在firebase上关联这两个对象?它是否像关系数据库一样工作?或者在数据设计方面需要完全不同的方法?

nosql data-structures firebase firebase-realtime-database

107
推荐指数
2
解决办法
5万
查看次数

Firebase权限被拒绝

我对编码比较新,遇到了麻烦.

我有这个代码将数据发送到firebase

app.userid = app.user.uid

var userRef = app.dataInfo.child(app.users);

var useridRef = userRef.child(app.userid);

useridRef.set({
  locations: "",
  theme: "",
  colorScheme: "",
  food: ""
});
Run Code Online (Sandbox Code Playgroud)

但是,我一直收到错误:

FIREBASE警告:设置为/ users /(GoogleID)失败:permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(...)

当我试着查看它时,它会讨论Firebase的规则,它似乎是一种我还没有学过的语言(或者它只是在我脑海中).有人可以解释导致问题的原因吗?我以为是我要求它存储电子邮件和用户显示名称而你只是不允许这样做,但当我把它拿出来时我仍然遇到同样的问题.有没有办法在没有设定规则的情况下避免这种错误,或者规则是我可以教自己如何在一天内写作,或者我是否只是走出了我的联盟?

谢谢你的帮助!

javascript firebase firebase-security firebase-realtime-database

105
推荐指数
4
解决办法
12万
查看次数

如何保护firebase云功能HTTP端点仅允许Firebase经过身份验证的用户?

使用新的firebase云功能,我决定将我的一些HTTP端点移动到firebase.一切都很好......但我有以下问题.我有两个端点由HTTP触发器(云功能)构建

  1. 用于创建用户并返回Firebase Admin SDK生成的自定义令牌的API端点.
  2. 用于获取特定用户详细信息的API端点.

虽然第一个端点很好,但对于我的第二个端点,我希望仅为经过身份验证的用户保护它.意思是拥有我之前生成的令牌的人.

我该如何解决这个问题?

我知道我们可以使用云函数获取Header参数

request.get('x-myheader')
Run Code Online (Sandbox Code Playgroud)

但有没有办法保护端点就像保护实时数据库一样?

firebase firebase-security firebase-authentication firebase-realtime-database google-cloud-functions

104
推荐指数
4
解决办法
4万
查看次数

Firebase和GraphQL?

谁有经验将两者结合使用?

我想一个将firebase调用放在相关字段的解析器中,将一些变量从组件props传递到查询的参数中.

让我们知道您的想法!

firebase graphql firebase-realtime-database graphql-js

71
推荐指数
5
解决办法
3万
查看次数