从文档"... where()方法有三个参数:要过滤的字段,比较操作和值.比较可以是<,<=,==,>或> = ... "
我们需要执行的查询是:
在这个问题中,建议是实施全文搜索,例如Elastic或Algolia.我不需要全文搜索 - 我只需要这些基本操作符来搜索指定的字段.但我遇到的更大的问题是我的应用程序离线很长一段时间,我们将离线所需的数据缓存,离线全文搜索不是一个选项(除非你获得企业版($$) $$$$)Algolia的许可证 - 但对于我们正在寻找的东西似乎仍然过度.
当你在"???"中有任何解决方案("FIELD","???","string")是"不等于","包含","不包含",还是"以...开头"?
感谢任何想法.
我们可以让Firestore将记录下载到本地缓存,并可以读取这些记录.但是,我们无法更新记录,也无法添加新记录.
甚至尝试了一些相同的代码(https://github.com/firebase/quickstart-android),但似乎无法使离线写/插入工作 - 只读.
当我们将此函数调用为脱机时,它将被调用OnFailureListner并抛出异常
@Override
public void onRating(Rating rating) {
// In a transaction, add the new rating and update the aggregate totals
addRating(mRestaurantRef, rating)
.addOnSuccessListener(this, new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "Rating added");
// Hide keyboard and scroll to top
hideKeyboard();
mRatingsRecycler.smoothScrollToPosition(0);
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Add rating failed", e);
// Show failure message and hide keyboard
hideKeyboard();
Snackbar.make(findViewById(android.R.id.content), "Failed to add …Run Code Online (Sandbox Code Playgroud)