1

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

基本上,我正在尝试制作一个函数,它将从“今天”对象中的所有用户那里获取数据并将其推送到“昨天”对象中(例如统计信息或流程)。为此,我使用基于 cron 示例的主题。

我已经开始构建由 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); });
});

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

4

1 回答 1

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); });
});
于 2017-03-11T19:10:26.803 回答