首页 > 解决方案 > 在 Firebase Cloud Function 上合并两个数组

问题描述

我有这两个节点,我需要在一个 http 调用中获得它们。我试图通过使用 async/await 来获取两个节点,然后使用 concat 或 forEach 组合它们来实现这一点。但似乎即使我在等待回复,在函数内部它们仍然是承诺,而不是数据本身。这是我的基本示例:

exports.searchVisit = functions.https.onRequest(async (req, res) => {
  const today = new Date(Date.now());
  let todayVisits = await admin.database().ref('/visits/').once('value');
  let frequentVisits = await admin.database().ref('/frequent_visits/').once('value');

  console.log(todayVisits); // Prints an object (I guess it is a promise)

  res.status(200).send(todayVisits); // Returns correctly the data on visits collection
});

我怎样才能实现返回 todayVisits 和frequentVisits 的组合?提前致谢。

标签: firebasefirebase-realtime-databasegoogle-cloud-functions

解决方案


在您的代码中,todayVisits是一个DataSnapshot类型的对象。这不是一个承诺。记录该 DataSnapshot 对象不太可能有用。如果您想查看该快照中的原始数据,请对其调用val()以获取一个 JavaScript 对象,其中包含该快照中的整个数据集。这也是您可能想要发送给客户端的内容(不是 DataSnapshot 的全部内容)。


推荐阅读