Firebase云功能:如何在http请求中使用通配符推送数据

时间:2017-03-11 18:45:54

标签: javascript firebase firebase-realtime-database google-cloud-functions

我正在Firebase中探索新的云功能功能,因此我知道通配符在实时数据库触发器中的工作原理,但是当我尝试在http请求中添加通配符时,它会忽略通配符并将新数据推送到新的 {userId} 对象。

基本上,我正在尝试创建一个函数,它将从“今天”对象中的所有用户获取数据并将其推送到“昨天”对象(类似于统计或进程)。为此我基于cron示例使用this topic

我已经开始构建由http请求触发的简单功能,并想要为所有用户推送一些数据( {userId} 通配符),但数据正被推送到新的 {userId} 对象,忽略通配符。

exports.addEntry = functions.https.onRequest((req, res) => {
  const value = req.query.addValue;
  admin.database().ref('users/{userId}').push({value}).then(snapshot => {
  res.redirect(303, snapshot.ref); });
});

问题:如何使此功能将数据推送给所有用户?

1 个答案:

答案 0 :(得分:1)

在触发器中连接通配符的语法不适用于构建数据库引用的路径。在那里你必须使用常规的字符串插值:

exports.addEntry = functions.https.onRequest((req, res) => {
  const value = req.query.addValue;
  admin.database().ref('users/'+userId).push({value}).then(snapshot => {
  res.redirect(303, snapshot.ref); });
});

或ES6模板文字:

exports.addEntry = functions.https.onRequest((req, res) => {
  const value = req.query.addValue;
  admin.database().ref(`users/${userId}`).push({value}).then(snapshot => {
  res.redirect(303, snapshot.ref); });
});