Java 安卓Firebase:用户发送数据进行手动检查,如果检查通过,所有人都可以使用数据
我有一个多用户应用程序。 我的用户在我的应用程序中填写表格,然后发送到我的firebase数据库中的“uncheckedForms”。我需要手动检查他们发送的表单 表单是一个Java对象,其布尔“isPassedInspection”实例变量默认设置为false 手动检查后,如果按照我的标准,此表单已“通过”,则直接从firebase控制台将此实例变量设置为true 另一方面,我的数据库中还有第二个项目,名为“forms”,它表示已通过手动检查的活动表单,并且它们的“isPassedInspection”设置为true 我的所有应用程序用户都读取相同的数据。此数据从“表单”中检索,并绑定到我的应用程序中的RecyclerView 这是一幅插图 我试图弄清楚如何使我刚刚检查过的表单变为true,从而自动从“未选中的表单”移动到“表单” 我很想听听建议。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
谢谢:)正如您所说,您希望从控制台检查表单,然后将数据从未选中的表单传输到表单。以下是您可能实现的方法 路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(); } }); //
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(); } }); //
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);
为了简单起见,我