GVKun编程网logo

Cloud Firestore 和 Firebase 实时数据库有什么区别?(firebase cloud messaging)

7

如果您对CloudFirestore和Firebase实时数据库有什么区别?和firebasecloudmessaging感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解CloudFiresto

如果您对Cloud Firestore 和 Firebase 实时数据库有什么区别?firebase cloud messaging感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Cloud Firestore 和 Firebase 实时数据库有什么区别?的各种细节,并对firebase cloud messaging进行深入的分析,此外还有关于Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践?、android – FirebaseUI和Firebase有什么区别?、android – 将Firebase数据库转换为Cloud Firestore、android-FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2的实用技巧。

本文目录一览:

Cloud Firestore 和 Firebase 实时数据库有什么区别?(firebase cloud messaging)

Cloud Firestore 和 Firebase 实时数据库有什么区别?(firebase cloud messaging)

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

我一直在阅读文档,但我没有看到 Firestore 和 Firebase DB 之间有很多区别。

重点是 Firestore 使用文档和集合,与 Firebase 相比,它允许轻松使用查询,Firebase 是具有 JSON 基础的传统 noSQL
数据库。

我想更多地了解它们的区别或用法,或者 Firestore 是否刚刚取代了 Firebase DB?

Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践?

Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践?

如何解决Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践??

Android 上的基本用户登录/注册场景,使用 viewmodel 处理 LiveData。我使用 Firebase Auth 进行身份验证,使用 Cloud Firestore 用于 Cloud DB 和 Firebase Storage 用于存储图像。假设在注册期间用户提供了个人资料图片,我带来的工作流程是:(注册)

  • firebaseAuth.createuserWithEmailAndPassword()
  • 将图片保存到存储并获取下载地址
  • 将用户数据放入 Cloud Firestore 数据库(以图片 url 作为字段)
  • 更新 firebase 用户的 photoUrl 字段
  • 使用登录用户更新 viewmodel

这些任务按此特定顺序依次执行,以实现对数据库的持久性。 一个任务(第一个任务除外)仅在前一个任务成功完成(使用 OnSuccessListener)后运行,如果其中任何一个任务失败,则删除 firebase 用户,并且 viewmodel 更新错误。 这个实现的问题是非常慢,因为每个任务都需要等待前一个任务完成,这会减慢注册实体的过程,但我认为这是必要的,以避免非持久性数据(例如,图像可能未加载但用户保存在云 Firestore 中,然后 viewmodel 更新,但没有图像导致空指针异常 ecc...)。所以我要问的是:有更好的方法来处理这个问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android – FirebaseUI和Firebase有什么区别?

android – FirebaseUI和Firebase有什么区别?

所以我是Firebase的新手,我想弄清楚firebaseui和Firebase是否是同一个东西.我已经浏览了firebase.google.com上的教程,但是我注意到一些在线视频使用的是firebaseui.

firebaseui和常规Firebase有什么区别?当我编程时,我是否同时使用firebaseui和Firebase?

我希望将它用于Firebase Web和Firebase Android.

提前致谢!

解决方法:

Firebase是一个用于构建Web和移动应用程序的平台.它由一组云服务和一组SDK(在某些情况下为REST API)组成,用于访问这些服务.

firebaseui是一组基于Firebase SDK构建的库,可以更轻松地绑定用户界面元素.

具体来说:适用于Android和iOS的firebaseui包装Firebase的数据库和身份验证SDK,以便在Android和iOS应用程序中轻松使用这些服务.

firebaseui for web是该领域的新进入者,仅包装Authentication SDK.为了方便您在Web应用程序中使用数据库,请为您首选的Web平台寻找专用库:AngularFire,AngularFire2,ReactFire,EmberFire.这些名称可能代表他们所针对的网络库.

android – 将Firebase数据库转换为Cloud Firestore

android – 将Firebase数据库转换为Cloud Firestore

愿你们所​​有人都能获得关于Cloud Firestore by Firebase的好消息.

由于我想将Firebase数据库转换为Cloud Firestore,有没有简单的方法来转换它?

我想继续使用Cloud Firestore.

解决方法:

我在学习新事物时写自己的指南.这是我的指南,描述了我如何将我的实时数据库迁移到Cloud Firestore.您可以跳过第一部分.我在Markdown中写道,一些代码标记没有转换为StackOverflow的标记.如果您在阅读时遇到问题,我会通过电子邮件向您发送原始的Markdown版本.现在我正在努力将我的控制器更新为Cloud Firestore查询.

从Firebase实时数据库迁移到Cloud Firestore

为什么以及为什么不使用Firebase实时数据库?

两年多来,我的首选阵容是Angular和Firebase.数据绑定引起了我的注意 – 如果用户在视图中更改数据,数据会立即在控制器和云数据库中发生变化.或任何其他事件顺序.我的第一个Firebase项目是一个井字游戏,两个玩家可以远程玩游戏,我的点击会立即出现在你的屏幕上,反之亦然,云数据库会在两者之间进行更新. (Firebase将这种“同步状态称为实时客户端.”)

我也喜欢Firebase的Auth库.使用Facebook,Google,Twitter,GitHub或电话号码或旧式电子邮件和密码设置OAuth2用户登录非常简单.

我不喜欢处理设置和维护服务器.

我喜欢使用Nosql数据库.我在JavaScript中使用对象数组,那么为什么不在数据库中使用相同的数据结构呢?

我不需要这个,但移动应用程序开发人员可以使用Firebase实时数据库的离线功能.当用户不在服务范围内时,数据库可以继续更新,以便当用户重新联机时他或她可以访问当前数据.

Plus Firebase具有用于存储大型二进制文件(如图片,音频和视频)的存储空间.

关于Firebase实时数据库有什么不喜欢的?查询.我的狗有很多邻居女朋友,我需要一个数据库来跟踪他们所有.我想打电话给中国的老板邀请她参加比赛.获取他们的电话号码并不容易.我无法告诉Firebase查看数组狗,找到名称等于中国的对象,并返回字段phone_number.我必须告诉Firebase下载整个数组,然后运行forEach循环迭代每个对象,查找名称===中国.这称为“深度查询”,因为它返回数组中的每个对象,每个子数组以及所有嵌套的子级别.我的狗有这么多的女朋友,所以下载它们可能需要几秒钟!

Firebase实时数据库有排序,所以我可以下载按名称,年龄等排序的邻居狗阵列.我可以过滤,例如,只有五岁以上的狗,但Firebase实时数据库无法排序和过滤.

在Firebase实时数据库中查找特定对象的关键是了解其密钥.键是轻量级对象,看起来像-KloeQHDC-mugPjJMAG4.如果跟踪对象的键,则可以轻松地从数据库中检索对象.例如,当新用户使用Facebook登录并在Auth数据库中创建记录,然后您在实时数据库中创建用户帐户时,您可以将用户的身份验证密钥设置为用户帐户中的键值对,以便您可以轻松找到与此用户关联的身份验证数据(displayName,photoURL等).

有一个用于Auth的数据库,另一个用于二进制文件存储的数据库,以及用于其他一切的第三个数据库,您有很多要跟踪的密钥.

对于大数据项目,Firebase实时数据库还有其他限制.数据只能嵌套32层深.向上扩展需要分片.如果您的客户端正在处理大数据,或者错误地认为他的5000条记录是大数据,那么您将有一些争论要说服您的客户端不要在服务器上使用sql.

为何选择Cloud Firestore?

为什么?查询!使用Cloud Firestore,我现在可以查询我的狗阵列,请求名称等于中国的记录. Firebase仅返回我想要的对象.

Cloud Firestore可以对数据进行排序和过滤.

Cloud Firestore可以处理文档中的子集合.您可以请求包含文档子集的文档,只需获取文档,而不使用它的子集合.即,浅层查询.您甚至可以删除包含文档子集的文档,并保留子集.

Cloud Firestore还可以比Firebase实时数据库更好地扩展.安全性更好,还有其他新功能和改进.

注入依赖关系

首先,您需要将Cloud Firestore添加到项目中.在链接到Firebase CDN后的index.html文件中,链接到Cloud Firestore CDN:

<script src="https://www.gstatic.com/firebasejs/4.5.0/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.5.0/firebase-firestore.js"></script>

或者下载Node模块并链接到它:

npm install firebase@4.5.0 --save

如果您在节点服务器上使用Firebase SDK,则还需要添加依赖项:

const firebase = require("firebase");
// required for side-effects
require("firebase/firestore");

同样在index.html中,您需要初始化应用:

firebase.initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

如果您还使用Firebase实时数据库,存储和云消息传递,您将拥有更多内容:

firebase.initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  databaseURL: "https://###.firebaseio.com",
  messagingSenderId: "###",
  projectId: '### CLOUD FIRESTORE PROJECT ID ###',
  storageBucket: "###.appspot.com"
});

最后,在控制器中引用Cloud Firestore:

var db = firebase.firestore();

迁移您的数据

接下来,您需要将数据从Firebase实时数据库迁移到Cloud Firestore.这很简单.

return firebase.database().ref('dogs').once('value') // get a snapshot of the user's data
.then(function(snapshot) { // then execute a promise on the snapshot
  snapshot.forEach(function(childSnapshot) { // iterate through the user's data
    let childData = childSnapshot.val(); // this is the user's data
    db.collection('dogs').doc(childData.dog).set(childData); // each dog is written to Cloud Firestore
  })
});

不要这样做:

return firebase.database().ref('dogs').once('value') // get a snapshot of the user's data
.then(function(snapshot) { // then execute a promise on the snapshot
    db.collection('dogs').set(snapshot); // copy the array to Cloud Firestore
});

后者将复制Firebase实时数据库密钥.它也无法正常工作,因为您无法将集合上传到Cloud Firestore,您只能上传文档.

在前一个示例中,forEach循环遍历每个记录并将其作为文档上载到Cloud Firestore.该集合是自动创建的,并命名为狗.这也会删除Firebase实时数据库密钥,并将其替换为Cloud Firestore密钥.

返回将停止此命令后执行的任何代码.如果要迁移多个阵列,则仅在最后一个命令上使用return:

firebase.database().ref('dogs').once('value') // get a snapshot of the user's data
.then(function(snapshot) { // then execute a promise on the snapshot
  snapshot.forEach(function(childSnapshot) { // iterate through the user's data
    let childData = childSnapshot.val(); // this is the user's data
    db.collection('dogs').doc(childData.dog).set(childData); // each dog is written to Cloud Firestore
  })
});

firebase.database().ref('cats').once('value') // get a snapshot of the user's data
.then(function(snapshot) { // then execute a promise on the snapshot
  snapshot.forEach(function(childSnapshot) { // iterate through the user's data
    let childData = childSnapshot.val(); // this is the user's data
    db.collection('cats').doc(childData.cat).set(childData); // each cat is written to Cloud Firestore
  })
});

return firebase.database().ref('cetaceans').once('value') // get a snapshot of the user's data
.then(function(snapshot) { // then execute a promise on the snapshot
  snapshot.forEach(function(childSnapshot) { // iterate through the user's data
    let childData = childSnapshot.val(); // this is the user's data
    db.collection('cetaceans').doc(childData.cetacean).set(childData); // each whale and dolphin is written to Cloud Firestore
  })
});

将数据嵌套在集合和文档中

Firebase实时数据库允许您在数组中包含数组,在对象中包含对象,在对象中包含数组或在数组中包含对象. Cloud Firebase仅允许集合(数组)中的文档(对象)和文档中的集合.换句话说,Cloud Firebase数据始终是结构化集合 – 文档 – 集合 – 文档等.

也许您想将嵌套数组复制到子集合中:

return firebase.database().ref('dogs').child('girlfriends').once('value') // get a snapshot of the user's data
.then(function(snapshot) { // then execute a promise on the snapshot
  snapshot.forEach(function(childSnapshot) { // iterate through the user's data
    let childData = childSnapshot.val(); // this is the user's data
    db.collection('dogs').doc(childData.word).set(childData); // write the data to Cloud Firestore
    db.collection('dogs').doc('dogs').collection('girlfriends').doc(childData.dog).set(childData);

  })
});

在这里,我们从数组狗中获取数组女友,使用forEach循环遍历数组,并将每个记录写入集合狗中的文档狗中的集合女友.我将顶级系列和顶级文件命名为狗.您可以使用不同的名称.

更新代码

现在我们开始更新代码.

更新参考

我们已经更新了一行代码.我们更新了Firebase实时数据库参考:

let ref = firebase.database().ref();

到Cloud Firestore:

let db = firebase.firestore();

您暂时可以退出Firebase实时数据库参考,然后将其注释掉或在我们完成后将其删除.

我的另一个Firebase实时数据库引用到我的用户数组:

let users = firebase.database().ref('users');

我们会将其更新为:

let usersFS = firebase.firestore().collection('users');

我们将使用不同的名称,以便我们可以一起运行两个数据库,直到我们完成迁移.

更新查询

现在我们可以开始更新我们的查询.在我的控制器中,我的第一个firebase.database().ref查询是:

firebase.database().ref('userLoginEvent').update({'user': user.uid})

对于Cloud Firestore,我们改为使用:

db.collection('userLoginEvent').doc('HUSEj7dPh8xsOw32feQY').update({'user': user.uid});

代码几乎相同,只是Cloud Firestore需要在集合中指定文档.这里我引用文档的密钥,因为该命令总是写入数据库中的相同位置.

接下来,我有:

firebase.database().ref('users').child($scope.userAccountKey).update(englishWords);

我们会将其更新为:

db.collection('users').doc($scope.userAccountKey).update(englishWords);  // this isn't working

营销人员将其命名为Cloud FireStore?

这个名字太长了!查看域名,我看到fire.me仍然可用.我想知道为什么市场营销人员没有提出简短,令人难忘的域名?

android-FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2

android-FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2

我试图按照here给出的指南使用Firebase Cloud Messaging编写应用程序,但我为添加实现FCM的依赖项而感到惊讶(com.google.firebase:firebase-core:9.0.2).每次我尝试通过项目结构添加它时,它都不会在搜索结果中列出依赖项.当我尝试将其添加到应用程序级别gradle中时,它给我一个错误,导致无法解决依赖关系.我不知道我要去哪里错了,但是请帮我解决这个问题.

解决方法:

从您的SDK管理器下载更新.我遇到过同样的问题.从SDK经理更新Google Play服务和Google Repository对我来说很有效.

今天关于Cloud Firestore 和 Firebase 实时数据库有什么区别?firebase cloud messaging的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践?、android – FirebaseUI和Firebase有什么区别?、android – 将Firebase数据库转换为Cloud Firestore、android-FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2的相关知识,请在本站搜索。

本文标签: