Firebase.firestore
和FirebaseFirestore.getInstance()
有什么区别?
当我想要更新db时,哪一个适合于此目的?
以及当我想检查从Firestore提取的结果值时。
如果我记录它,它只打印对象名称,而不打印包含在对象中结果字符串值。
db.collection("users").whereEqualTo("userId", userId?.toInt())
.get()
.addOnSuccessListener {
documents - >
for (document in documents) {
Log.d("결과", documents.toString())
}
}
如果我打印这个,它抛出如下结果:
网址:google.firebase.firestore.QuerySnapshot@b38fd47b
我想读取此QuerySnapshot的字段和值,如何执行此操作?
共享代码和错误:
var db =消防基地.消防仓库
val stDocRef = db.collection("users").whereEqualTo("userId", userId?.toInt())
db.runTransaction { transaction ->
transaction.update(stDocRef,"name", "new name")
null
}.addOnSuccessListener { Log.d("결과", "Transaction success!") }
2条答案
按热度按时间fhity93d1#
Firebase.firestore和Firebase Firestore.getInstance()之间的区别是什么?
None,都是创建同一个示例,第一个示例是使用Firebase类的扩展属性创建的,第二个示例是使用FirebaseAuth的getInstance()方法创建的,后者也是单例。
如果我记录它,它只打印对象名,而不是包含在对象中的结果字符串值。
这是预期的行为,因为您在
documents
对象上调用toString()
:来自lambda表达式的
documents
实际上是QuerySnapshot类型的文档,它:包含查询结果。它可以包含零个或多个DocumentSnapshot对象。
因此,你必须循环通过文档,因为你已经得到的数据根据类型的字段:
但是如果你想运行一个事务,在我看来这没有任何意义,因为你只是阅读数据,那么请检查documentation,或者我从下面的帖子回答:
kgsdhlau2#
你试图打印
QuerySnapshot
对象,因此它给你的是Memory Address of the Object
。为了克服这个问题,尝试打印document.data
,如下例所示。根据docs,使用
Firebase.firestore
初始化db
请参阅以下链接了解使用Kotlin在firebase中执行CRUD操作: