Функции firebase Метка времени преобразуют ее в строку

# #javascript #firebase-realtime-database #google-cloud-functions #firebase-admin

Вопрос:

 const signupTime =admin.database.ServerValue.TIMESTAMP
    
    database.ref(`/admin/vendorOrder/${vendor}/${userID}`).set(signupTime);
    console.log(signupTime);
 

я хочу
, чтобы значение времени, пока оно находится в базе данных, возвращалось правильно
введите описание изображения здесь

в журнале consol он возвращается введите описание изображения здесь

как заставить его возвращать значение в строке

тоже

 database.ref(`/admin/vendorOrder/${vendor}/${userID}/${signupTime}/order`).set(order);
 

возвращает ошибку
введите описание изображения здесь
пожалуйста, помогите

Ответ №1:

Как объяснено в документе, с ServerValue.TIMESTAMP помощью вы получаете «значение заполнителя для автоматического заполнения текущей метки времени, определенной серверами Firebase«.

Другими словами signupTime , не содержит значения метки времени, так как эта метка устанавливается на сервере (серверной части) при записи в базу данных.

Если вы хотите получить это значение в своей облачной функции (или в интерфейсе), вам необходимо запросить вновь установленный узел базы данных, например, следующим образом:

   const signupTime = admin.database.ServerValue.TIMESTAMP

  const database = admin.database();
  const ref = database.ref(`/admin/vendorOrder/${vendor}/${userID}`);

  ref
    .set(signupTime)
    .then(() => {
      return ref.get();
    })
    .then((snap) => {
      console.log(snap.val());
    })
    .catch((error) => {
      console.log(error);
    });