如果您对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)
- 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,这是他们新的应用文档数据库。
我一直在阅读文档,但我没有看到 Firestore 和 Firebase DB 之间有很多区别。
重点是 Firestore 使用文档和集合,与 Firebase 相比,它允许轻松使用查询,Firebase 是具有 JSON 基础的传统 noSQL
数据库。
我想更多地了解它们的区别或用法,或者 Firestore 是否刚刚取代了 Firebase DB?
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有什么区别?
所以我是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
愿你们所有人都能获得关于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
我试图按照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的相关知识,请在本站搜索。
本文标签: