使用 firebase 响应构建 json 个对象

Build json object with firebase responses

我正在为从两次 firebase 调用中收集的 return 数据构建一个 json 对象。在开发中,对象带有数据(事件)。当我构建应用程序并部署数据(事件)时 returns a null

这是我的代码:

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()query Realtime Database a single timeon() 是异步的,用于添加持续接收数据的持久侦听器。 once() 也是异步的,但它 returns 有一个通过数据快照解析的承诺。

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