首页 > 数据库 >firebath数据库常见操作——增删改查使用总结

firebath数据库常见操作——增删改查使用总结

时间:2022-10-20 23:03:03浏览次数:46  
标签:... google firebath 改查 task firebase 增删 import com

firebath数据库常见操作——增删改查使用总结

问题背景

之前在看一个GitHub上的海外项目用到了Google的实时在线数据库firebath,查看官方文档提供的demo和api介绍感觉相对还是比较少的。现把之前用到的一些API进行简单总结,后续有需要会持续优化。

问题分析

项目对应module的gradle文件中添加响应依赖

// firebase platform dependencies
    implementation platform('com.google.firebase:firebase-bom:30.4.1')
    // authentication
    implementation 'com.google.firebase:firebase-auth'
    //firestore
    implementation 'com.google.firebase:firebase-firestore'
        //storage
    implementation 'com.google.firebase:firebase-storage'
    implementation 'com.google.firebase:firebase-analytics'

使用到的api梳理如下: 1、用户注册相关API使用

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseAuthUserCollisionException;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.UserProfileChangeRequest;
import com.google.firebase.firestore.FirebaseFirestore;

import java.util.HashMap;
import java.util.Map;

public class RegisterActivity extends AppCompatActivity {
    ...
    private FirebaseAuth mAuth;
    private FirebaseFirestore db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        // Initialize Firebase Auth
        mAuth = FirebaseAuth.getInstance();
        db = FirebaseFirestore.getInstance();
        ...
    }



    /**
     * todo: 注册
     */
    protected void registerUser(String email,String password,String name){
        mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                    if(task.isSuccessful()){
                        FirebaseUser user = mAuth.getCurrentUser();
                        // set FirebaseUtil userId
                        FirebaseUtil.saveUserId(RegisterActivity.this, mAuth.getCurrentUser().getUid());
                        ...
                        Map<String, Object> usermap = new HashMap<>();
                        usermap.put("displayName", name);
                        /**
                         * 注册成功初始化用户系信息到users表中
                         */
                        db.collection("users")
                                .document(user.getUid())
                                .set(usermap)
                                .addOnSuccessListener(aVoid -> {
                                })
                                .addOnFailureListener(e -> {
                                });
                        ...
                    }else{
                    ...
                    }
            }
        });
    }
    ...
}

2、查询firebath数据库相关API使用demo

    public static void getEvent(String eventId, Handler handler) {
        Log.d(TAG, "getEvent begin");
        FirebaseFirestore.getInstance().collection("events")
                .document(eventId).get()
                .addOnCompleteListener(task -> {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "getEvent isSuccessful" + task.getResult().getData().toString());
                        Event event1 = null;
                        try {
                            event1 = (Event) JsonUtil.mapToObject(task.getResult().getData(), Event.class);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        Message message = Message.obtain();
                        message.obj = event1;
                        message.what = 1;
                        handler.sendMessage(message);
                    } else {
                        Log.e(TAG, "getEvent complete failed");
                    }
                }).addOnFailureListener(e -> {
                    Log.d(TAG, "getEvent Failure");
                });
//        return event.get();
    }

3、修改firebath数据库某数据字段API使用demo 先查询到数据,然后重新赋值。

    public static void cancelEvent(String eventId) {
        Log.d(TAG, "getEvent begin");
        FirebaseFirestore.getInstance().collection("events")
                .document(eventId).get()
                .addOnCompleteListener(task -> {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "getEvent isSuccessful" + task.getResult().getData().toString());
                        Event event1 = null;
                        try {
                            event1 = (Event) JsonUtil.mapToObject(task.getResult().getData(), Event.class);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        event1.setStatus("canceled");
                        FirebaseFirestore.getInstance().collection("events")
                                .document(eventId).set(event1);
                    } else {
                        Log.e(TAG, "getEvent complete failed");
                    }
                }).addOnFailureListener(e -> {
                    Log.d(TAG, "getEvent Failure");
                });
//        return event.get();
    }

4、插入数据到firebath数据库API使用demo

    public static void insertNotificationMap(Map<String, Object> notificationMap) {
        Log.d(TAG, "insertNotificationMap begin");
        FirebaseFirestore.getInstance().collection("notifications")
                .document()
                .set(notificationMap)
                .addOnCompleteListener(task -> {
                    ...
                })
                .addOnSuccessListener(aVoid -> {
                    ...
                }).addOnFailureListener(e -> {
                    ...
                });
    }

5、删除firebath数据库某条数据API使用demo

    public static void deleteNotificationMap(String documentId) {
        Log.d(TAG, "deleteNotificationMap begin");
        FirebaseFirestore.getInstance().collection("notifications")
                .document(documentId).delete()
                .addOnCompleteListener(task -> {
                    Log.d(TAG, "deleteNotificationMap Complete");
                    if (task.isSuccessful()) {
                        ...
                    } else {
                        ...
                    }
                })
                .addOnSuccessListener(aVoid -> {
                    ...
                }).addOnFailureListener(e -> {
                    ...
                });
    }

问题总结 本文梳理了部分之前使用到的firebath相关的增删改查相关API操作,后面有需要会持续优化。

标签:...,google,firebath,改查,task,firebase,增删,import,com
From: https://blog.51cto.com/baorant24/5780728

相关文章