Articles of firebase database

Firebase数据库警告:“使用未指定的索引。 考虑添加“.indexOn”以获得更好的性能

使用Firebase实时数据库运行我的Android应用时,我收到以下警告: 使用未指定的索引。 考虑将“.indexOn”…添加到您的安全和Firebase数据库规则中,以获得更好的性能 我完全理解这个警告。 但我不知道如何让它变得更好。 我真的只想查询索引字段! 这是我的DB: { “groupUsers” : { “g1” : { “u1” : “admin” }, “g2” : { “u1” : “admin”, “u2” : “readonly” } }, “groups” : { “g1” : { “areas” : { “a1” : { “groupId” : “g1”, “name” : “My Group” } }, “interests” : { “i1” : […]

为什么Firebase会在明确更改设备的本地日期时停止同步?

当我将手机的本地日期设置更改1个月或更长时间,然后重新启动使用Firebase实时数据库的Android应用程序后,它不会从数据库加载数据并继续加载。 为什么会这样? Firebase在获取数据之前是否检查设备的本地时间? 这是Android App的onCreate() MainActivity 在设置中更改日期(10天或更长时间)然后关闭并重新打开应用程序后,进度条永远不会被隐藏。 甚至没有调用onCancelled函数。 final ProgressBar progressBar = findViewById(R.id.progress_bar); final TextView textView = findViewById(R.id.textView); progressBar.setVisibility(View.VISIBLE); FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference(“message”); myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String value = dataSnapshot.getValue(String.class); textView.setText(value); progressBar.setVisibility(View.INVISIBLE); } @Override public void onCancelled(DatabaseError error) { progressBar.setVisibility(View.INVISIBLE); } });` 应用级别gradle apply plugin: […]

了解Firebase何时完成API调用?

知道我的Firebase API调用何时完成,我遇到了一些麻烦。 阅读Firebase documentation我发现了以下内容: 值事件始终最后触发,并保证包含在拍摄快照之前发生的任何其他事件的更新。 我理解这意味着只有在完成所有onChildAdded调用之后, onChildAdded调用ValueEventListener 。 结果,我认为我可以在onChildAdded函数中填充我的RecyclerView ,然后在onSingleValueListener调用中填充,我可以简单地完成animation我的加载屏幕(在此函数调用之前已开始animation)并继续。 但是,我遇到了一个问题,我在其中放了一些仔细的System.out.println语句,发现在我的情况下,在调用Test 2之前调用了Test 1 。 这会导致问题,因为这实际上是我想要的相反行为:我希望onChildAdded函数完成,然后调用打印出要调用的Test 1的onSingleValueListener函数。 有什么理由发生这种情况吗? 有什么方法吗? 我很感激为什么会发生这种情况的解释。 谢谢! public void getComments(final String postId, final Activity activity, final View fragmentView, final View progressOverlay) { final Firebase commentsRef = firebaseRef.child(“/comments”); Firebase linkRef = firebaseRef.child(“/posts/” + postId); linkRef.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { […]

从Google Play运行但不是从Android Studio运行时出现NullPointerException

我有一个大问题,我不知道发生了什么,我已经上传了一个应用程序到Play商店,因为当我在模拟器上运行它甚至在我的真实设备上它没有崩溃,但现在当我下载来自Google Play的它说: java.lang.NullPointerException: at com..onBindViewHolder (ChooseCard.java) or .onCreateViewHolder (ChooseCard.java) at com..onBindViewHolder (ChooseCard.java) or .onCreateViewHolder (ChooseCard.java) at com.firebase.ui.database.FirebaseRecyclerAdapter.getItemCount (FirebaseRecyclerAdapter.java) or .onBindViewHolder (FirebaseRecyclerAdapter.java) or .onChildChanged (FirebaseRecyclerAdapter.java) or .onError (FirebaseRecyclerAdapter.java) at com.yarolegovich.discretescrollview.InfiniteScrollAdapter.access$100 (InfiniteScrollAdapter.java) or .getItemCount (InfiniteScrollAdapter.java) or .getItemViewType (InfiniteScrollAdapter.java) or .onAttachedToRecyclerView (InfiniteScrollAdapter.java) or .onBindViewHolder (InfiniteScrollAdapter.java) or .onCreateViewHolder (InfiniteScrollAdapter.java) or .wrap (InfiniteScrollAdapter.java) 这个问题已经好几天了,我找不到它,你能帮我一把吗? 这是我的build.gradle实现 implementation fileTree(include: [‘*.jar’], dir: ‘libs’) […]

在Firebase Auth(android)之后在数据库中创建用户

我正在构建一个Android应用程序,我希望我的用户成为Auth,然后添加到数据库中。 目前我只使用电子邮件和密码进行validation,然后单击“注册”,用户将在Firebase控制台的“身份validation”部分中创建。 但我也希望将我的用户添加到数据库中。 我想添加更多字段(例如名称,地址等),这些字段将存储在Firebase的用户数据库中。 我只是不知道该怎么做。 有人可以解释一下吗? 谢谢!

我们是否需要使用后台线程来使用firebase检索数据?

我有一个Android应用程序,我正在将数据检索到片段中。 我相信Firebase可以管理其异步调用。 但我仍然怀疑我们是否需要在后台线程中编写Firebase代码? 如果我们需要将它写入后台线程,那么请告诉您哪些操作需要更多时间。 例如: mDatabase = FirebaseDatabase.getInstance().getReference().child(“Blog”); 我认为在主UI线程上执行此操作可能会充满风险,因为设置数据库之间的连接可能需要花费很长时间。

如何在firebase android中添加新数据

这是我在firebase实时数据库中添加新人的逻辑。 但是,不是创建新条目,而是使用新数据更新旧数据。 buttonSave.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /* new Firebase(Config.FIREBASE_URL) .push() .child(“title”) .setValue(text.getText().toString()); */ Firebase ref = new Firebase(Config.FIREBASE_URL); String name = editTextName.getText().toString().trim(); String address = editTextAddress.getText().toString().trim(); //Creating Person object Person person = new Person(); //Adding values person.setName(name); person.setAddress(address); ref.child(“Person”).setValue(person); } }); new Firebase(Config.FIREBASE_URL).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { […]

如何从Android应用程序连接到多个firebase数据库

我正在尝试在Firebase中创建一个项目,该项目将负责所有应用程序的一个常见问题。 也就是说,我想创建应用程序,然后让这些应用程序访问项目的特定Firebase数据库。 查看Firebase Android文档,我找不到使用以下方法将数据发送到另一个项目中的另一个firebase数据库的方法,但是引用是另一个项目。 DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child(“example”); ref.push().setValue(d).addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { finish(); } });

如何通过方法返回dataSnapshot值?

我对Java没有多少经验。 我不确定这个问题是不是很愚蠢,但是我需要从Firebase实时数据库中获取用户名,并且由于此方法而返回此名称。 所以…我想出了如何获得这个值,但我不明白如何返回它作为这个方法的结果。 最好的方法是什么? private String getUserName(String uid) { databaseReference.child(String.format(“users/%s/name”, uid)) .addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { // How to return this value? dataSnapshot.getValue(String.class); } @Override public void onCancelled(DatabaseError databaseError) {} }); }

删除Firebase java中的所有侦听器

我知道文档说“//在Java中,必须明确删除每个侦听器。” 但有一个问题。 我部署我的应用程序 – 添加一个监听器(保存指针)。 但是当我重新部署我的应用程序时,监听器仍然存在,但我无法删除它,因为我没有指针。 🙁 那么如何删除所有听众呢? (没有服务器重启)