我应该如何在Firebase数据库中使用ID

时间:2018-09-28 14:12:32

标签: c# android firebase xamarin

您好,Firebase开发人员!

今年早些时候,我被聘为一家初创公司,我们将继续发展我们的 xamarin中的应用程序,我们决定使用Firebase作为后端。我以某种方式感到遗憾,因为它对.net / xamarin的友好程度并不高,例如azure。

但是,在经过今年的一些变通方法和经验教训后,我们将Firebase稳定地集成到了我们的应用程序中。发布会在几周后进行,所以现在我们对后端进行最后的润饰,这引发了我的问题。

目前,我们的实时数据库的构建方式如下:

-posts
   -id
      -id
      -title
      -content
      -etc

 -user-profiles
    -id
       -id
       -name
       -age
       -etc

所以我基本上将每个项目的ID存储两次。首先,尽管我将ID保存为每个对象的字段将很实用,因为当我反序列化时 将json转换成.net对象,我在每个模型中都有一个ID属性,以简化业务逻辑。

但是,所有的firebase示例都没有使用此逻辑,也没有任何第三方教程。

我可以使用更清洁的数据库结构吗? 预先加油,谢谢!

2 个答案:

答案 0 :(得分:0)

好吧,postsuser-profiles都应该是集合-但是在实现方式中, RTDB 会将其作为对象来处理。就我个人而言,我使用与您相同的方法,这是因为RTDB的工作原理-您可以直接向其发送路径,并获取所需的数据。另一种替代将像数组一样存储,但是您将失去对这些人的控制权-不一定,但是它不像将其存储在大对象中并通过其id来获取那样直观必要时。

如果您担心重复数据,可以在读/写“ 前端”代码时实现一种处理该问题的方法。

答案 1 :(得分:0)

  

所以我基本上将每个商品的ID存储两次。

我不喜欢在对象本身中复制对象的键。但这是个人喜好而不是硬性规定。我只是发现它使我的代码更混乱而不是有用。

我通常更喜欢保留快照(以便可以从那里获取密钥),或者在我将DataSnapshot反序列化为这样的数据对象后立即将密钥注入数据对象。有关此示例(在Android中),请参见Is there a way to store Key in class which I cast from Firebase object?