Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓Firebase:用户发送数据进行手动检查,如果检查通过,所有人都可以使用数据_Java_Android_Firebase_Firebase Realtime Database_Firebase Console - Fatal编程技术网

Java 安卓Firebase:用户发送数据进行手动检查,如果检查通过,所有人都可以使用数据

Java 安卓Firebase:用户发送数据进行手动检查,如果检查通过,所有人都可以使用数据,java,android,firebase,firebase-realtime-database,firebase-console,Java,Android,Firebase,Firebase Realtime Database,Firebase Console,我有一个多用户应用程序。 我的用户在我的应用程序中填写表格,然后发送到我的firebase数据库中的“uncheckedForms”。我需要手动检查他们发送的表单 表单是一个Java对象,其布尔“isPassedInspection”实例变量默认设置为false 手动检查后,如果按照我的标准,此表单已“通过”,则直接从firebase控制台将此实例变量设置为true 另一方面,我的数据库中还有第二个项目,名为“forms”,它表示已通过手动检查的活动表单,并且它们的“isPassedInspec

我有一个多用户应用程序。 我的用户在我的应用程序中填写表格,然后发送到我的firebase数据库中的“uncheckedForms”。我需要手动检查他们发送的表单

表单是一个Java对象,其布尔“isPassedInspection”实例变量默认设置为false

手动检查后,如果按照我的标准,此表单已“通过”,则直接从firebase控制台将此实例变量设置为true

另一方面,我的数据库中还有第二个项目,名为“forms”,它表示已通过手动检查的活动表单,并且它们的“isPassedInspection”设置为true

我的所有应用程序用户都读取相同的数据。此数据从“表单”中检索,并绑定到我的应用程序中的RecyclerView

这是一幅插图

我试图弄清楚如何使我刚刚检查过的表单变为true,从而自动从“未选中的表单”移动到“表单”

我很想听听建议。
谢谢:)

正如您所说,您希望从控制台检查表单,然后将数据从未选中的表单传输到表单。以下是您可能实现的方法

路1。使用firebase云数据库功能

  • 以未选中的格式启动观察者
  • 当有任何更改时,检查isPassedInspection==true
  • 如果为true,则将数据从未选中的表单复制到表单
  • 从未选中的表单中删除数据

    exports.checkedForms=functions.database.ref('/uncheckedForms/{formsKey}').onWrite(事件=>{ var itemKey=event.data.ref.parent.key; var formsData=event.data.val(); if(formsData.isPassedInspection==true){ formsData.isPassedInspection=true; var formsRoot=admin.database().ref(“/forms”).child(itemKey); formsRoot.set(formsData); var uncheckedFormsRoot=admin.database().ref(“/uncheckedForms”).child(itemKey); 取消选中msroot.remove(); } }); //

路2。您可以只通过表单表而不使用未选中的表单来处理这种情况。在ReyclerView中,仅传递具有

isPassedInspection=true;

正如您所说的,您希望从控制台检查表单,然后将数据从未选中的表单传输到表单。以下是您可能实现的方法

路1。使用firebase云数据库功能

  • 以未选中的格式启动观察者
  • 当有任何更改时,检查isPassedInspection==true
  • 如果为true,则将数据从未选中的表单复制到表单
  • 从未选中的表单中删除数据

    exports.checkedForms=functions.database.ref('/uncheckedForms/{formsKey}').onWrite(事件=>{ var itemKey=event.data.ref.parent.key; var formsData=event.data.val(); if(formsData.isPassedInspection==true){ formsData.isPassedInspection=true; var formsRoot=admin.database().ref(“/forms”).child(itemKey); formsRoot.set(formsData); var uncheckedFormsRoot=admin.database().ref(“/uncheckedForms”).child(itemKey); 取消选中msroot.remove(); } }); //

路2。您可以只通过表单表而不使用未选中的表单来处理这种情况。在ReyclerView中,仅传递具有

isPassedInspection=true;

有两种方法可以实现这一点。第一种解决方案是客户端,您可以在
isPassedInspection
属性上附加
ValueEventListener
,以检查值是否为真。如果值为
true
,则将该对象从
uncheckedForms
复制到
forms
。显然,一旦表单成功复制,不要忘记删除表单
取消选中dforms
。第二种方法是在中编写一个具有相同用途的函数,将侦听器附加到同一位置,并检查
isPassedInspection
的值是否已更改,如果更改为true,则将表单复制到其他部分。Satish Rajbhar的函数可能有效,我没有尝试过,但请记住,此解决方案的好处是,即使用户关闭了应用程序,也可以在另一端复制表单

如果我是你,我就不会使用这种数据库结构。我只使用了一个名为
forms
的节点,然后根据
isPassedInspection
属性查询数据库。因此,主要思想是只向用户显示您选中的表单。查询应如下所示:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("forms").orderByChild("isPassedInspection").equalsTo(true);

有两种方法可以实现这一点。第一种解决方案是客户端,您可以在
isPassedInspection
属性上附加
ValueEventListener
,以检查值是否为真。如果值为
true
,则将该对象从
uncheckedForms
复制到
forms
。显然,一旦表单成功复制,不要忘记删除表单
取消选中dforms
。第二种方法是在中编写一个具有相同用途的函数,将侦听器附加到同一位置,并检查
isPassedInspection
的值是否已更改,如果更改为true,则将表单复制到其他部分。Satish Rajbhar的函数可能有效,我没有尝试过,但请记住,此解决方案的好处是,即使用户关闭了应用程序,也可以在另一端复制表单

如果我是你,我就不会使用这种数据库结构。我只使用了一个名为
forms
的节点,然后根据
isPassedInspection
属性查询数据库。因此,主要思想是只向用户显示您选中的表单。查询应如下所示:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("forms").orderByChild("isPassedInspection").equalsTo(true);
为了简单起见,我