在Firestore上可以离线创建DocumentReference对象吗?

时间:2019-07-30 01:12:48

标签: java android database google-cloud-firestore offline-caching

有没有一种方法可以在离线时通过ID在Firestore上创建文档参考(对象-DocumentReference)?

我希望能够在与为此目的而开始使用文档引用(对象DocumentReference)不同的活动中使用文档引用(对象DocumentReference),我将文档引用的ID作为字符串获得,并且正在传递字符串并以额外的intent.putExtra("documentID",id);为目的,并在我的新活动中再次创建对象:

documentReference = FirebaseFirestore.getInstance()
                .collection("Notebook")
                .document(Objects.requireNonNull(getIntent().getStringExtra("documentID")));  // added Objects.requireNonNull to avoid warning` 

问题是无法离线创建文档参考。有什么办法可以解决这个问题?

我正在考虑在另一个类中创建一个静态Map,并将所有文档引用对象映射到那里id,因此我可以将文档引用保留为对象,以便在离线时使用该对象。这种解决方案的问题是对象没有存储在数据库中,并且我认为它们最终将从内存中删除,然后我将再次无法脱机工作。我还想到了将它们存储在另一个可能存储对象的数据库中。我检查了这篇文章,它太复杂了,似乎无法解决问题。

Array.prototype.some

是否可以在活动之间转移对象?或者也许是一种将对象保存在离线android数据库中的方法?

我认为在这里使用查询可能是我唯一的解决方案,因为它可以很好地脱机工作,但是使用查询只是为了获取有关一个文档的特定信息并转换文档快照(DocumentSnapshot)对我来说似乎是错误的)到文档引用(对象DocumentReference),以更新文档。

在我的第一个活动中,我正在为我的recyclerview(RecyclerView)使用Firestore回收器适配器(FirestoreRecyclerAdapter),因此实际上我能够在脱机的同时获取文档快照(DocumentSnapshot),然后可以在其中调用{{1} }。这是该代码,我假设它与查询相同。

getReference()

我希望有一种更简单的方法来获取一个特定的文档(对象DocumentReference)。有人对这个有了解吗?

我知道方法Query query = FirebaseFirestore.getInstance().collection("Notebook").orderBy("priority", Query.Direction.DESCENDING); FirestoreRecyclerOptions<Note> options = new FirestoreRecyclerOptions.Builder<Note>() .setQuery(query, Note.class) .build(); adapter = new NoteAdapter(options); ,并且我已经启用了离线持久性:isFromCache(),所以不需要您的建议,谢谢。

我也阅读了很多次文档,因此无需告诉我它的存在。 https://mobikul-com.cdn.ampproject.org/v/s/mobikul.com/saving-complex-objects-using-android-room-library/amp/?usqp=mq331AQEKAFwAQ%3D%3D&amp_js_v=0.1#referrer=https%3A%2F%2Fwww.google.com&amp_tf=From%20%251%24s&ampshare=https%3A%2F%2Fmobikul.com%2Fsaving-complex-objects-using-android-room-library%2F

0 个答案:

没有答案