firebase-databasefirebase-database入门


备注

本节概述了firebase-database是什么,以及开发人员可能想要使用它的原因。

它还应该提到firebase-database中的任何大型主题,并链接到相关主题。由于firebase-database的文档是新的,您可能需要创建这些相关主题的初始版本。

版本

平台SDK 发布日期
Firebase JavaScript SDK 3.7.0 2017年3月1日
Firebase C ++ SDK 3.0.0 2107年2月27日
Firebase Unity SDK 3.0.0 2107年2月27日
Firebase iOS SDK 3.14.0 2017年2月23日
Firebase Android SDK 10.2 2017年2月15日
Firebase Admin Node.js SDK 4.1.1 2017年2月14日
Firebase管理Java SDK 4.1.2 2017年2月14日

将Firebase添加到您的Android项目中

这里是创建Firebase项目并将其与Android应用程序连接所需的步骤。

将Firebase添加到您的应用

  1. Firebase控制台中创建Firebase项目,然后单击“ 创建新项目”

  2. 点击添加Firebase到您的Android应用,然后按照设置步骤操作。

  3. 出现提示时,输入应用程序的包名称
    输入您的应用正在使用的包名称非常重要;只有在将应用程序添加到Firebase项目时才能设置此项。

  4. 最后,您将下载google-services.json 文件。您可以随时再次下载此文件。 (此文件位于Firebase控制台中的项目设置下)。

  5. 切换android studio查看到Project并粘贴app文件夹下的google-service.json文件

下一步是添加SDK以在项目中集成Firebase库。

添加SDK

要将Firebase库集成到您自己的项目中,您需要执行一些基本任务来准备Android Studio项目。您可能已将此操作作为向应用添加Firebase的一部分。

  1. 将规则添加到根级build.gradle 文件,以包含google-services插件
buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.1.1'
    }
}
 

然后,在您的模块Gradle文件(通常是app/build.gradle )中,添加文件底部的apply plugin行以启用Gradle插件:

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-core:9.4.0'//THIS IS FOR ANALYTICS
  compile "com.google.firebase:firebase-database:11.0.2" 
}

// BELOW STATEMENT MUST BE WRITTEN IN BOTTOM
apply plugin: 'com.google.gms.google-services'
 

笔记:

  • 没有身份验证就无法读取/写入数据。如果你想要它没有身份验证。更改Database firebase控制台中的规则。

    {“rules”:{“。read”:true,“。write”:true}}

  • 在Manifest中添加Internet权限

  • 升级Google Play服务和Google信息库

自动将自定义模型映射到数据结构

将一些数据设置到数据库并获得由这样的几个节点组成的结构之后;

"user" : {
    "-KdbKcU2ptfYF2xKb5aO" : {
      "firstName" : "Arthur",
      "lastName" : "Schopenhauer",
      "userName" : "AphorismMan",
      "phone" : "+9022-02-1778",
      "gender": "M",
      "age" : 25
    },
    "-KdbQFjs9BDviuqQVHjY" : {
      "firstName" : "Werner",
      "lastName" : "Heisenberg",
      "userName" : "whereAmI",
      "phone" : "+9005-12-1901",
      "gender": "M",
      "age" : 75
    }
  }
 

您可以对数据结构进行分类。

创建类

创建要设置为数据库的模型类。

@IgnoreExtraProperties
public class User {
    public String firstName;
    public String lastName;
    public String userName;
    public String phone;
    public String gender;
    public int age;

    public User() {
    }

    public User(String firstName, String lastName, String userName, String phone, String gender, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.userName = userName;
        this.phone = phone;
        this.gender = gender;
        this.age = age;
    }
}
 

创建要映射到数据的模型类时要记住的一些事项:

  1. 你必须有一个空的构造函数
  2. 变量/字段的范围必须是公共的,以便从firebase返回的DataSnapshot可以访问这些字段。如果不这样做,当您想要获取数据时,DataSnapshot无法在回调中访问您的模型,这将导致异常。
  3. 变量/字段的名称应与数据结构中的名称匹配。

发送到Firebase

创建用户对象

User user = new User ( "Arthur","Schopenhauer","AphorismMan","+9022-02-1778","M",25)
 

和参考

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
 

现在您可以参考您的数据库了。使用databaseReference.child("user") 创建user 节点。如果你执行.push() 你的模型将在随机创建的唯一ID中找到,如上所述, "-KdbKcU2ptfYF2xKb5aO", "-KdbQFjs9BDviuqQVHjY"

databaseReference.child("user").push().setValue(user, new DatabaseReference.CompletionListener() {
            @Override
            public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                Toast.makeText(getActivity(), "User added.", Toast.LENGTH_SHORT).show();

            }
        });
 

如果要在特定密钥下设置数据,请使用.child("yourSpecificKey") 而不是.push()

databaseReference.child("user").child("yourSpecificKey").setValue(user,...

将简单的值写入数据库

首先,完成安装和设置 ,将您的应用连接到Firebase。然后从班上的任何地方,你可以写:

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");
 

它会写Hello, Wold! 进入message 节点,如下所示:

"your-project-parent" : {
    "message" : "Hello, World!"
}
 

说明

FirebaseDatabase database = FirebaseDatabase.getInstance();
 

上面的代码将FirebaseDatabase 实例分配给database 对象以供进一步使用。

DatabaseReference myRef = database.getReference("message");
 

上面的代码会将myRef 对象引用到项目父级的"message" 子级中(在本例中,它是"your-project-parent" )。所以它是"your-project-parent/message"

myRef.setValue("Hello, World!");
 

上面的代码将设置"Hello, World!" 进入myRef 引用的myRef