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 с angular (с использованием SDK firebase по умолчанию, а не angularfire) **

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

3
Abdun Nahid 14 Сен 2018 в 06:18

2 ответа

Лучший ответ

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

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

4
Doug Stevenson 14 Сен 2018 в 03:50

Попробуй это

let deposit.created_at= firebase.firestore.Timestamp.now();

0
Pavan Garre 22 Апр 2020 в 14:37