Невозможно обновить данные в Firestore - PullRequest
0 голосов
/ 28 апреля 2020

Я не могу обновить данные в моей базе данных пожарного депо. Я ввел новые данные и нажал кнопку «Сохранить задачу», но ничего не произошло .. Я не уверен, в чем проблема. Мой код ниже:

 saveTask.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String taskName = name.getText().toString();
            String taskDate = tDate.getText().toString();
            String startTime = sTime.getText().toString();
            String endTime = eTime.getText().toString();
            String taskTag = tTag.getSelectedItem().toString();
            String notes = tNotes.getText().toString();
            String stat = Status.getText().toString();

            userId = mFirebaseAuth.getCurrentUser().getUid();
            taskRef = fStore.collection("usersData").document(userId).collection("tasks").document();
            taskRef.update("taskName",taskName);
            taskRef.update("taskDate",taskDate);
            taskRef.update("startTime",startTime);
            taskRef.update("endTime",endTime);
            taskRef.update("taskTag",taskTag);
            taskRef.update("notes",notes);
            taskRef.update("status", stat);
        }
    });

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Похоже, вы намереваетесь создать новый документ:

taskRef = fStore
    .collection("usersData")
    .document(userId)
    .collection("tasks")
    .document();

Передача без значения в document() говорит о том, что вам нужен документ со случайным идентификатором, который будет уникальным.

Учитывая, что это будет новый документ, который еще не существует, вы не сможете использовать update() для него, так как update() для документов, которые не существуют, всегда потерпит неудачу. Если вы проверите результаты каждого update(), вы фактически увидите, что каждый из них потерпел неудачу.

Вместо этого вы, вероятно, захотите сделать это использовать set() для создания нового документа и передать ему карту всех поля, которые вы хотите добавить в новый документ, как показано в документации .

0 голосов
/ 28 апреля 2020

есть какая-нибудь ошибка печати? поправьте меня, если я ошибаюсь, у вас есть коллекция userData, которая содержит структуру с задачами, и вы хотите добавить к ней новую задачу? если это сценарий, вы должны получить его из userData документа следующим образом:

userRef = await fStore.collection("usersData").document(userId);
await userRef.get().then(async function(querySnapshot){
let userData = await querySnapshot.docs[0].data();
await userData.update(tasks: admin.firestore.FieldValue.arrayUnion({
                       taskName: taskName,
                       taskDate: taskDate,
                       startTime: startTime,
                              .
                              .
                              .
     }));   

, если все еще не работает, пожалуйста, напечатайте taskRef, чтобы увидеть, если это DocumentReference

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