如何使用 Firebase 实时数据库?

Posted

技术标签:

【中文标题】如何使用 Firebase 实时数据库?【英文标题】:How can I use Firebase Realtime Database? 【发布时间】:2021-11-17 11:45:39 【问题描述】:

我曾尝试使用 firebase 文档和 firebase 工具在 firebase 数据库上插入一条简单的消息,但这并没有更新。

我还在启动应用程序后添加了我的 Firebase 控制台的图片。

请帮我找bug!!!

MainActivity.java

public class MainActivity extends AppCompatActivity 
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference myRef = database.getReference("message");
        myRef.setValue("Hello, World!");
    

Gradle 应用程序

plugins 
    id 'com.android.application'
    id 'com.google.gms.google-services'



android 
    compileSdk 31

    defaultConfig 
        applicationId "com.example.firebase_realtimedata001"
        minSdk 21
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        
    
    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    


dependencies 

    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
    implementation 'com.google.firebase:firebase-database:20.0.2'
    implementation platform('com.google.firebase:firebase-bom:28.4.1')
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-database'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

控制台图片

【问题讨论】:

确保您已在实时数据库控制台中配置读写规则 您的数据库在美国中部的位置是什么?请回复@AlexMamo 【参考方案1】:

您的代码运行良好。当我点击添加按钮时,Hello, World! 消息被添加到数据库中

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate ( Bundle savedInstanceState ) 
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_main );
        Button addMessage = findViewById ( R.id.button );
        addMessage.setOnClickListener ( v -> addMessage () );
    

    public void addMessage () 
        DatabaseReference myRef = FirebaseDatabase.getInstance ().getReference ( "message" );
        myRef.setValue ( "Hello, World!" ).addOnCompleteListener ( new OnCompleteListener<Void> () 
            @Override
            public void onComplete ( @NonNull Task<Void> task ) 
                Log.d ( "INFORMATION", "Added" );
            
         );
    

点击addMessage按钮后实时数据库显示如下消息

确保您有如下所示的规则

【讨论】:

@niranjan1997 - 我试过了,但问题是一样的。 @AlexMamo - 我为数据库选择新加坡位置

以上是关于如何使用 Firebase 实时数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloud Functions for Firebase 更新 Firebase 实时数据库中的值

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

使用flutter如何在同一个App中使用多个firebase实时数据库

如何使用 Flutter 和 Firebase 实时数据库实现邀请系统 [关闭]

如何使用NodeJS中的firebase云功能从firebase实时数据库中找出最近的位置LatLng