【问题标题】:How to use template literal in Firebase Cloud Function condition如何在 Firebase Cloud Function 条件下使用模板文字
【发布时间】:2020-10-15 16:08:09
【问题描述】:

是否可以在 Firebase Cloud Function 的消息条件中使用模板文字?

我尝试了以下方法,但它不起作用。

topic1 = `${myObject.id}`
topic2 = `${myObject.name}`
var condition = "topic1 in topics || topic2 in topics";

var message = {
  notification: {
    title: 'My object',
    body: 'My object.'
  },
  condition: condition
};

admin.messaging().send(message);

我改成这个还是不行:

      topic = "_full";
      topic1 = `${myObj.field1}` + topic;
      topic2 = (`${myObj.field2.field1}_${myObj.field2.field2}` + topic)
        .toString()
        .toLowerCase()
        .split(" ")
        .join("_");
      topic3 = `${myObj.field3.field1}` + topic;
      topic4 = `${myObj.field4.field1}` + topic;

      condition = `${topic1} in topics || ${topic2} in topics || ${topic3} in topics || ${topic4} in topics`;

我收到“错误:提供的条件表达式无效。”

【问题讨论】:

  • 你现在拥有的有什么问题?请编辑问题,以明确哪些问题未按您预期的方式工作。
  • 我试过了,但它不起作用。

标签: javascript firebase firebase-cloud-messaging


【解决方案1】:

因为你有"topic1 in topics || topic2 in topics",它是一个普通的字符串,其中的变量不会被扩展。 topic1 也不是变量,应该是 ${topic1}

您可以:

var condition = `${myObject.id} in topics || ${myObject.name} in topics`;

或者:

topic1 = `${myObject.id}`
topic2 = `${myObject.name}`
var condition = `${topic1} in topics || ${topic2} in topics`;

【讨论】:

  • 您的新代码比我在回答中的代码和您最初的代码要复杂得多。我建议在浏览器的 JavaScript 控制台中对字符串操作进行故障排除,因为它与 FCM 或 Cloud Functions 无关。
  • 我用编辑器检查了情况,看起来不错。
【解决方案2】:

不要忘记在主题周围添加单引号:

var condition = `'${topic1}' in topics || '${topic2}' in topics`;

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2018-01-24
    • 2021-11-24
    相关资源
    最近更新 更多