gpt4 book ai didi

android - 如何避免 Firebase 数据库中的重复数据

转载 作者:太空狗 更新时间:2023-10-29 15:50:58 24 4
gpt4 key购买 nike

在我的 Android 应用程序中,我以这种方式在 firebase 数据库中插入一个 VideoEntity 对象:

@Override
protected void onCreate(Bundle savedInstanceState){

Log.d(TAG, " onCreate(Bundle) - Ini ");
super.onCreate(savedInstanceState);

database = FirebaseDatabase.getInstance();
String videoId = "";

for(VideoEntity video: videosList) {
videoId = video.getId();
DatabaseReference mRef = database.getReference().child("Videos").push();
mRef.setValue(video);
}

这是 VideoEntity 类:

 package com.app.entities;

import android.os.Parcel;
import android.os.Parcelable;

import java.io.Serializable;

public class VideoEntity implements Parcelable{

private String id;
private String title;
private String description;
private String thumbnailURL;
private String category;



public VideoEntity() {

}

public VideoEntity(Parcel in) {
id = in.readString();
title = in.readString();
description = in.readString();
thumbnailURL = in.readString();
category = in.readString();

}



public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getThumbnailURL() {
return thumbnailURL;
}

public void setThumbnailURL(String thumbnail) {
this.thumbnailURL = thumbnail;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getCategory() {return category;}

public void setCategory(String category) { this.category = category;}

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {

dest.writeString(id);
dest.writeString(title);
dest.writeString(description);
dest.writeString(thumbnailURL);
dest.writeString(category);
}

public static final Creator<VideoEntity> CREATOR = new Creator<VideoEntity>() {
@Override
public VideoEntity createFromParcel(Parcel in) {
return new VideoEntity(in);
}

@Override
public VideoEntity[] newArray(int size) {
return new VideoEntity[size];
}
};
}

问题是每次我开始这个 Activity 时,相同的对象都会插入到数据库中,所以我在数据库中有重复的数据。

有什么办法可以避免这种情况吗?

最佳答案

如果您的数据有自然键,请将其存储在其自然键下。在您的情况下,视频有一个 id 字段,该字段可能已经是唯一的。因此,不要将视频存储在推送 ID 下,而是将它们存储在现有 ID 下:

DatabaseReference mRef =  database.getReference().child("Videos").child(video.getId());
mRef.setValue(video);

这样,下次您运行该应用时,它只会再次将相同的数据写入相同的位置

关于android - 如何避免 Firebase 数据库中的重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39553198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com