从Firebase Admin向用户订阅Firebase云消息主题会导致主题参数的语法无效

从Firebase Admin向用户订阅Firebase云消息主题会导致主题参数的语法无效,firebase,google-cloud-functions,firebase-cloud-messaging,Firebase,Google Cloud Functions,Firebase Cloud Messaging,我的代码的目标是循环遍历集合中的所有用户,并在Firebase Cloud Messaging中将每个用户订阅到各自的社区。我从Firebase http函数调用它。不幸的是,我一直收到错误提供给subscribeToPIC()的主题必须是与格式“/topics/[a-zA-Z0-9-.~%]+”匹配的字符串。我很确定我正确地格式化了topic参数,所以我不确定问题出在哪里 const db = admin.firestore(); const usersQuerySnap = await db

我的代码的目标是循环遍历集合中的所有用户,并在Firebase Cloud Messaging中将每个用户订阅到各自的社区。我从Firebase http函数调用它。不幸的是,我一直收到错误
提供给subscribeToPIC()的主题必须是与格式“/topics/[a-zA-Z0-9-.~%]+”
匹配的字符串。我很确定我正确地格式化了topic参数,所以我不确定问题出在哪里

const db = admin.firestore();
const usersQuerySnap = await db.collection('users').get();
const subscribePromises = [];
usersQuerySnap.forEach((user) => { //loop through users
  let communityID = user.get('communityID');
  let topic = "/topics/" + communityID; //create the topic parameter
  const tokens = []; 
  tokens.push(user.get('fcmToken')); //add user's fcmToken to an array
  subscribePromises.push(admin.messaging().subscribeToTopic(tokens, topic));
});
await Promise.all(subscribePromises);
还需要注意的是,
communityID
始终是一个由大写和小写字母数字字符组成的字符串。

我建议您在在线正则表达式编辑器中检查“/topics/”+communityID,并出于调试目的打印该值,此错误似乎是由于您没有提供正确的标记而导致的。如果这不起作用,您能提供一个示例comunityID吗?我看你的代码没有任何错误。