Двойные поля - PullRequest
       2

Двойные поля

0 голосов
/ 04 апреля 2019

Я пытаюсь сохранить некоторые данные в базе данных Firebase в реальном времени и получаю дублированное поле

Я пытался изменить модели, но это ничего не изменило

submitVideoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    String locationName;
    locationName = mLocationSpinnerName;
            if(!locationInput.getText().toString().equals("")){
                locationName = locationInput.getText().toString();
            }

            LocationData tompkins = new LocationData(locationName, 30, 
 31);


            String userid = mFirebaseUser.getEmail().substring(0, 
mFirebaseUser.getEmail().indexOf("@"));
            String cleanUserId = userid.replaceAll("\\W", "");
            updateUserInfo(cleanUserId, mFirebaseUser.getEmail(), 
"nsaofdhiqo3", tompkins);
        }
    });

}

 private void updateUserInfo(String userId, String email, String videoId, 
 LocationData location) {
    VideoEntry videoEntry = new VideoEntry(videoId, location);
    UserData user = new UserData(email, videoEntry);

    mDatabaseRef.child("users").child(userId).setValue(user);
 }

VideoEntry.Java

   public class VideoEntry {
    public String text;
    public String mVideoId;
    public LocationData mLocationData;

    public VideoEntry() {}

    public VideoEntry(String text, String videoId) {
        this.text = text;
        mVideoId = videoId;
    }

    public VideoEntry(String videoId, LocationData locationData) {
        mVideoId = videoId;
        mLocationData = locationData;
    }

    public String getText() {
        return text;
    }

    public String getVideoId() {
        return mVideoId;
    }
}

UserData.Java

public class UserData {

    public String mName;
    public String mVideoId; //TO BE REMOVED
    public LocationData mLocationData;
    public ArrayList<VideoEntry> mVideoEntries;
    public VideoEntry mVideoEntry; //TO BE REMOVED

    public UserData(){}

    public UserData(String name){
        mName = name;
    }

    public UserData(String name, String videoId, LocationData locationData){
        mName = name;
        mVideoId = videoId;
        mLocationData = locationData;
    }
    public UserData(String name, String videoId, LocationData locationData, ArrayList<VideoEntry> videoEntries){
        mName = name;
        mVideoId = videoId;
        mLocationData = locationData;
        mVideoEntries = videoEntries;
    }

    public UserData(String name, VideoEntry videoEntry){
        mName = name;
        mVideoEntry = videoEntry;
    }

    public UserData(String name, VideoEntry videoEntry, LocationData locationData){
        mName = name;
        mVideoEntry = videoEntry;
        mLocationData = locationData;
    }

}

LocationData.java

public class LocationData {

    public String mName;
    public double mLongitude;
    public double mLatitude;

    public LocationData(){}

    public LocationData(String name, double longitude, double latitude) {
        mName = name;
        mLongitude = longitude;
        mLatitude = latitude;
    }
}

Я просто пытаюсь получить одно полевместо двух videoID (mVideoId и videoID) я думаю, может быть, ява "получил"?Firebase Screenshot

1 Ответ

0 голосов
/ 04 апреля 2019

Firebase по умолчанию сериализует / десериализует публичные поля и «свойства» (как определено стандартными методами получения и установки JavaBean).

Пометка ваших пользовательских полей как личных должна гарантировать, что они не будут записаны в базу данных:

private String mVideoId;

В качестве альтернативы вы можете пометить открытое поле или метод получения / установки как @Exclude:

@Exclude public String mVideoId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...