Функция FieldValue.arrayUnion () вызвана с неверными данными.FieldValue.serverTimestamp () может использоваться только с update () и set () - PullRequest
0 голосов
/ 14 сентября 2018
addDeposit(account, deposit) {

    let depositsDoc = this.db.collection("accounts")
                      .doc(account.id)
                      .collection("deposits")
                      .doc("deposits");

    return new Promise((resolve, reject) => {

      deposit.created_at = firebase.firestore.FieldValue.serverTimestamp();

      depositsDoc.update({
        "deposits": firebase.firestore.FieldValue.arrayUnion(deposit)
      })
        .then((a) => {
           resolve('success');
        })
        .catch((error) => {
          reject("failed");
        });

    })
      .then((res) => {
        return res;
      })
      .catch((error) => {
        return error;
      })

    }

** Firestore with angular (по умолчанию используется SDK Firebase, а не angularfire) **

Я пытался добавить метку времени к объекту депозита, напрямую добавляя свойство «create_at», вызывающее метку времени. Делая это, я получаю ошибку под названием выше. Как я могу добавить метку времени к объекту в массиве объектов в firestore?

1 Ответ

0 голосов
/ 14 сентября 2018

Вы не можете использовать FieldValue.serverTimestamp() в качестве значения для объединения (добавления) или удаления значения типа массива поля документа или из него. Если вы хотите использовать это значение метки времени, вам нужно передать его непосредственно в поле, которое вы обновляете или устанавливаете.

Вам придется подумать о другом способе структурирования ваших данных, который соответствует вашим потребностям, а также требованиям Firestore.

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