我收到这个错误:提供给sendToDevice()的注册令牌必须是一个非空字符串或非空数组。在Firebase MessagingError。Firebase Error[作为构造函数](/workspace/node_modules/fire base-admin/lib/utils/error.js:44: 28)
exports.mediZim = functions.firestore.document("users/{user}/responses/{pharmacy}")
.onCreate((change, context) => {
const myData = change.data();
const tokens = [];
fstore.collection("pharmacies").doc(myData.uid).collection("userTokens").get().then((snap) => {
return snap.forEach((element) => {
tokens.push(element.data().token);
});
});
return fcm.sendToDevice(tokens, {
data: {
title: "Medi-Zim",
body: change.data().message,
sound: "default",
},
});
});
在“users/{user}/responses/{pharmacy}”中,我有这个Firestore字段uid可用
我使用uid获取另一个集合中的文档ID,这样我就可以获取反馈到该文档的用户令牌。然后我想把通知发给代币。在尝试答案1和答案2后出现eslint错误,请从答案1再试一次
这是我从云函数中得到的错误:
提供给sendToDevice()的注册令牌必须是非空字符串或非空数组。在Firebase MessagingError。Firebase Error[作为构造函数](/workspace/node_modules/Firebase-admin/lib/utils/error.js:44: 28)
返回语句在循环完成并且令牌在数组中之前执行。
请尝试下面完全相同的代码,让我知道它是否有效。
exports.mediZim = functions.firestore.document("users/{user}/responses/{pharmacy}")
.onCreate(async (change, context) => {
const myData = change.data();
const tokens = [];
const tokenDocs = await fstore.collection("pharmacies").doc(myData.uid).collection("userTokens").get()
tokenDocs.docs.forEach((doc) => {
tokens.push(doc.data().token);
});
return fcm.sendToDevice(tokens, {
data: {
title: "Medi-Zim",
body: change.data().message,
sound: "default",
},
});
});
我使用了async await
而不是链接promise。现在应该等待Firestore的响应,然后返回FCM函数。
这里的问题不是令牌,而是async
代码。
请尝试以下代码:
exports.mediZim = functions.firestore
.document("users/{user}/responses/{pharmacy}")
.onCreate((change, context) => {
const myData = change.data();
return fstore
.collection("pharmacies")
.doc(myData.uid)
.collection("userTokens")
.get()
.then((snap) => {
const tokens = [];
snap.forEach((element) => {
tokens.push(element.data().token);
});
return fcm.sendToDevice(tokens, {
data: {
title: "Medi-Zim",
body: change.data().message,
sound: "default",
},
});
});
});
代码的问题是,您返回了fcm.sendToDevice
,而没有等待get
调用完成。因此,您总是将通知发送到空数组并收到错误。
我正在尝试从函数返回布尔值。 错误:布尔文字不符合预期的类型单位。 我知道unit是kotlin中的默认返回类型。我将如何将其更改为布尔值。
问题内容: 我想在两个单独的变量中从函数返回两个值。例如: 我希望能够分别使用这些值。当我尝试使用时,它返回,这不是我想要的。 问题答案: 你不能返回两个值,但可以返回并在调用后解压缩它: 在线意味着创建一个元组。你也可以使用括号,例如,但是元组是用逗号创建的,因此括号不是必需的。但是,你可以使用parens来提高代码的可读性或将元组分成多行。这同样适用于。 如果要返回两个以上的值,请考虑使用命名
问题内容: 我在从Node.js中的回调函数返回值时遇到了小麻烦,我将尝试尽可能轻松地解释我的情况。考虑一下我有一个片段,它包含URL,并命中该URL,并提供输出: 我试图将其包装在函数中并返回如下值: 因为在我的Node.js代码中,我有很多语句将决定value的值,例如: 关键是a内的所有语句将保持相同,除了的值。因此,绝对需要将这些通用代码放入函数中。我尝试了同样的方法,但是in总是会回报我
问题内容: 我正在尝试返回我从调用请求中的方法获取的值,有没有一种方法可以使我从重写的方法中获取该值?这是我的代码: 我无法获取值,因为要能够在方法中使用它,我需要将其声明为final,而我无法给它赋值。 问题答案: 问题是您试图同步返回的值,但是它是使用回调的异步方法,因此您无法做到这一点。您有2个选择: 您可以更改方法以接受回调,然后将回调链接到该方法。这类似于在rxJava之类的框架中进行映
我正在等待(从USSD请求中)检索一个值,以便返回它(getUSSD):
本文向大家介绍PHP 如何从函数返回两个值,包括了PHP 如何从函数返回两个值的使用技巧和注意事项,需要的朋友参考一下 无法明确返回两个变量,可以将它们放入列表/数组数据结构中并返回。 示例 输出结果 这将产生以下输出-