Firebase Rest Api 从我的模型类中读取数据返回 null [重复]

Posted

技术标签:

【中文标题】Firebase Rest Api 从我的模型类中读取数据返回 null [重复]【英文标题】:Firebase Rest Api reading data from my model classes return null [duplicate] 【发布时间】:2021-12-24 23:26:36 【问题描述】:

我正在尝试在 java Restful API 中运行 Get 方法。我尝试将我的模型类命名为类似于我的实时 Firebase,但这不是问题。

This is my real-time firebase. reference is Devices/Lamp/Ambient

这是我的模型类

 private String LightSwitch;
    private String DoorSwitch;

    // empty COnstructor
    public DeviceTest()  

    public DeviceTest(String lightSwitch, String doorSwitch) 
        LightSwitch = lightSwitch;
        DoorSwitch = doorSwitch;
    

    public String getLightSwitch() 
        return LightSwitch;
    

    public void setLightSwitch(String lightSwitch) 
        LightSwitch = lightSwitch;
    

    public String getDoorSwitch() 
        return DoorSwitch;
    

    public void setDoorSwitch(String doorSwitch) 
        DoorSwitch = doorSwitch;
    


这是我的 readFirebase 方法

public static List<DeviceTest> handleLight() 
        FireBaseService fbs = null;
        fbs = new FireBaseService();
      device = new DeviceTest();
        mylist = new ArrayList<>();
        DatabaseReference ref = fbs.getDb()
                .getReference("/Devices/Lamp");
        ref.child("Ambient")
                .addValueEventListener(new ValueEventListener() 
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) 
                        device = dataSnapshot.getValue(DeviceTest.class);
                        mylist = new ArrayList<>();
                        for (DataSnapshot unit : dataSnapshot.getChildren()) 
                            DeviceTest value = unit.getValue(DeviceTest.class);
                            mylist.add(value);

                        
                    

                    @Override
                    public void onCancelled(DatabaseError databaseError) 

                    
                );
//mylist.add(device);
        return mylist;
    

这里是 GET 方法

@Path("/devices")
public class DeviceResource 
    
    DeviceService deviceService = new DeviceService();

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<DeviceTest> getCustomers()
        return FireBaseService.handleLight();
    

Here is the null value in my postman

【问题讨论】:

您不能将mylist 作为方法的结果返回。 Firebase API 是异步的。因此,请检查副本以查看如何使用回调解决此问题。您可能也有兴趣阅读这篇文章,How to read data from Firebase Realtime Database using get()?。 我尝试过使用接口回调。这并没有解决问题 “那没有解决问题”没有提供足够的信息,所以我们可以提供帮助。因此,通过在 *** 上发布一个新问题,使用自己的 MCVE 向我们展示您的尝试,以便我和其他 Firebase 开发人员可以帮助您。 发布一个新问题或者我可以编辑这篇文章以提供更多信息吗? 不,发布一个新问题。 【参考方案1】:

看起来您正在返回列表,然后再填充数据。

addValueEventListener 是异步的,因此您的方法不会等待它的结果。 onDataChange 将在您的数据准备就绪时调用,但可能需要一段时间,因为它必须从网络中的外部源下载。

看看这个讨论:How to return DataSnapshot value as a result of a method?

【讨论】:

忘了说我已经尝试过使用接口类来获取方法之外的值了,但是也没有用。

以上是关于Firebase Rest Api 从我的模型类中读取数据返回 null [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 android 设备访问我的本地 REST api?

如何通过 HTTP REST API 访问我的 Firebase 数据库?

Firebase 动态链接 REST API 返回 400 错误请求

PayPal Rest API、firebase 函数和 Angular 6 出现 CORS 错误

如何将firebase REST API响应转换为打字稿中的数组?

来自远程 REST API 的 Firebase 分析?