1

Firebase の新しい Cloud Functions 機能を調査しているので、リアルタイム データベース トリガーでワイルドカードがどのように機能するかはわかっていますが、http リクエストでワイルドカードを追加しようとすると、ワイルドカードが無視され、新しいデータが新しい{userId}オブジェクトにプッシュされます。

基本的に、「今日」オブジェクトのすべてのユーザーからデータを取得し、それを「昨日」オブジェクト (統計やプロセスなど) にプッシュする関数を作成しようとしています。そのために、cron の例に基づいてこのトピックを使用しています。

すべてのユーザー ( {userId}ワイルドカード) のデータをプッシュするという考えで、http 要求によってトリガーされる単純な関数の構築から始めましたが、データはワイルドカードを無視して新しい{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 に答える