Как бы вы хранили несколько наборов данных с одним и тем же именем, но разные записи FireStore - PullRequest
0 голосов
/ 12 марта 2020

Привет, у меня есть форма, которую пользователь заполняет в моем приложении, которая включает в себя следующее: заголовок, имя пользователя, пароль, веб-адрес и примечание. Мой текущий код хранит данные для одной записи без проблем, но когда я go для ввода новой записи, данные перезаписываются. Мне нужно иметь возможность хранить несколько записей формы. Что мне нужно изменить в моем коде, чтобы включить это?

Строки зашифрованы с помощью другого кода в моей программе, поэтому он окружен try / catch.

 public void storePassword() {
        final String title_entry = title.getText().toString().trim();
        final String username_entry = title.getText().toString().trim();
        final String password_entry = title.getText().toString().trim();
        final String webaddress_entry = title.getText().toString().trim();
        final String note_entry = title.getText().toString().trim();



        Map<String, Object> user = new HashMap<>();
        try {
            user.put("title", EncryptDecrypt.encryptString(title_entry, Password));
        } catch (NoSuchAlgorithmException | InvalidKeySpecException | InvalidKeyException | InvalidAlgorithmParameterException | NoSuchPaddingException | IllegalBlockSizeException | BadPaddingException e) {
            e.printStackTrace();
        }
        try {
            user.put("username", EncryptDecrypt.encryptString(username_entry, Password));
        } catch (NoSuchAlgorithmException | InvalidKeySpecException | InvalidKeyException | InvalidAlgorithmParameterException | NoSuchPaddingException | IllegalBlockSizeException | BadPaddingException e) {
            e.printStackTrace();
        }
        try {
            user.put("password", EncryptDecrypt.encryptString(password_entry, Password));
        } catch (NoSuchAlgorithmException | InvalidKeySpecException | InvalidKeyException | InvalidAlgorithmParameterException | NoSuchPaddingException | IllegalBlockSizeException | BadPaddingException e) {
            e.printStackTrace();
        }
        try {
            user.put("webAddress", EncryptDecrypt.encryptString(webaddress_entry, Password));
        } catch (NoSuchAlgorithmException | InvalidKeySpecException | InvalidKeyException | InvalidAlgorithmParameterException | NoSuchPaddingException | IllegalBlockSizeException | BadPaddingException e) {
            e.printStackTrace();
        }
        try {
            user.put("note", EncryptDecrypt.encryptString(note_entry, Password));
        } catch (NoSuchAlgorithmException | InvalidKeySpecException | InvalidKeyException | InvalidAlgorithmParameterException | NoSuchPaddingException | IllegalBlockSizeException | BadPaddingException e) {
            e.printStackTrace();
        }
        userID = firebaseAuth.getCurrentUser().getUid();
        fDatasebase.collection("Users").document(userID).update(user);

    }

1 Ответ

1 голос
/ 12 марта 2020

Если вы хотите сохранить несколько форм для каждого пользователя, вы не можете использовать один и тот же идентификатор документа для каждой формы. Вместо этого следует использовать произвольный идентификатор документа и сохранить идентификатор пользователя в качестве поля в документе.

Map<String, Object> user = new HashMap<>();
// populate the map as you were

// put the UID in the map
String uid = firebaseAuth.getCurrentUser().getUid();
user.put("uid", uid);

// Add the document to the colleciton with a random ID
fDatasebase.collection("Users").add(user);

Чтобы получить все формы для пользователя, вы можете просто запросить «Пользователи» с фильтром на поле uid.

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