Javascript 使用firebase响应构建json对象

Javascript 使用firebase响应构建json对象,javascript,firebase-realtime-database,firebase-admin,Javascript,Firebase Realtime Database,Firebase Admin,我正在构建一个json对象来返回从两个firebase调用收集的数据。在开发中,对象附带数据(事件)。当我构建应用程序并部署时,数据(事件)返回空值 这是我的密码: import admin from '../../lib/firebase-admin'; const validate = async (token) => { let events = null let user = null if(token){ const decodedToken = awai

我正在构建一个json对象来返回从两个firebase调用收集的数据。在开发中,对象附带数据(事件)。当我构建应用程序并部署时,数据(事件)返回空值

这是我的密码:

import admin  from '../../lib/firebase-admin';

const validate = async (token) => {
  let events = null
  let user = null
  if(token){
    const decodedToken = await admin.auth().verifyIdToken(token, true);
    user = await admin.auth().getUser(decodedToken.uid);
  }
  admin.database().ref(`events`).on('value', snapshot => {
    events = { ...snapshot.val() }
  })
  const result = {
    data: {
       uid: user ? user.uid : null,
       email: user ? user.email : null,
      emailVerified: user ? user.emailVerified : null,
      events: events
    },
  };
  return result;
};

export default async (req, res) => {
  try {
    const { token } = JSON.parse(req.headers.authorization || '{}');
    const result = await validate(token);
    return res.status(200).send(result);
  } catch (err) {
    console.log(err);
    const result = undefined;
    return res.status(200).send(result);
  }
};
在这种情况下,应该使用
once()
而不是
on()
来执行
on()
是异步的,用于添加持续接收数据的持久侦听器
once()
也是异步的,但它返回时只提供一个与数据快照解析的承诺

const snapshot = await admin.database().ref(`events`).once('value');
events = { ...snapshot.val() }