Не могу использовать временную метку Firestore ('toDate' из неопределенного) - PullRequest
1 голос
/ 04 февраля 2020

Я использую Firestore в React. И это приложение сохраняет created_at datetime как объект Timestamp в Firestore, как показано ниже. используйте firebase.firestore.FieldValue.serverTimestamp().

export function createComment(uid, values, count) {
  return dispatch => {
    commentsRef
      .add({
        uid: uid,
        content: values.content,
        created_at: firebase.firestore.FieldValue.serverTimestamp()
      })
      .then(function() {
        roomsRef
          .doc(uid)
          .update({
            comment_count: Number(count) + 1
          })
          .then(() => {
            dispatch({ type: CREATE_COMMENT });
          });
      });
  };
}

Но ошибка возникает при попытке отобразить created_at метку времени.

// Fetch comments
export function fetchComments(uid) {
  return dispatch => {
    commentsRef
      .where("uid", "==", uid)
      .get()
      .then(snapshot => {
        const comments = snapshot.docs.map(doc => {
          return {
            const timstamp = doc.data().created_at.toDate();
            // error occurs
            ...doc.data(),
            id: doc.id,
            timestamp: timestamp
          };
        });
        return comments;
      })
      .then(comments => {
        dispatch({ type: FETCH_COMMENTS, payload: comments });
      });
  };
}

ошибка:

Ошибка типа: Не удалось прочитать свойство 'toDate' с неопределенным

Отметка времени успешно получена.

enter image description here

1 Ответ

2 голосов
/ 04 февраля 2020

created_At - это объект, как вы ясно показали в журнале. Если вы хотите преобразовать его в дату, выберите одно из полей. Так что created_at.nanoseconds даст вам метку времени, которую вы можете конвертировать.

Я не уверен, что такое toDate(), это не нативный js метод, вы ссылаетесь на момент js? Если вы хотите конвертировать метку времени в дату, попробуйте new Date(created_at.nanoseconds)

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