Firebase-database - 云函数查询
Firebase-database - Cloud function query
我正在 fcmTokens
中为 firebase 云消息保存令牌。每个用户最多拥有三个令牌。
{
"uid1" : {
"-Kt8Skx5sa-IeXhKBs4G" : {
"uid1" : "token1"
}
},
"uid2" : {
"-Kt8Xt1lT7OeyKJBs1ps" : {
"uid2" : "token1"
},
"-Kt8Xt1lT7OeyKJz892k" : {
"uid2" : "token2"
}
}
}
ids
是一个数组,其中包含需要接收消息的用户标识。我不能
似乎获得了每个用户的令牌。
错误:
Error: Registration token(s) provided to sendToDevice() must be a non-empty string or a non-empty array.
下面是我现在的:
function sendFcm(ids) {
const payload = {
notification: {
title: 'You have been invited to an event!',
body: 'Event body',
icon: "https://placeimg.com/250/250/people"
}
};
for (const key in ids) {
if (ids.hasOwnProperty(key)) {
admin.database()
.ref(`/fcmTokens/${ids[key]}/{pushId}/${ids[key]}`)
.once('value')
.then(token => token.val())
.then(userFcmToken => {
return admin.messaging().sendToDevice(userFcmToken, payload)
})
.then(res => {
console.log("Sent Successfully"), res
})
.catch(err => {
console.log(err);
})
}
}
}
你的数据结构似乎对你正在做的事情来说效率低下。如果每个用户有一组令牌,请准确地保持:每个用户一组令牌。
{
"uid1" : {
"token1": true
},
"uid2" : {
"token1": true,
"token2": true,
"token3": true
}
}
然后:
for (const key in ids) {
if (ids.hasOwnProperty(key)) {
admin.database()
.ref(`/fcmTokens/${ids[key]}`)
.once('value')
.then(snapshot => {
snapshot.forEach((tokenSnapshot) => {
let userFcmToken = tokenSnapshot.key;
admin.messaging().sendToDevice(userFcmToken, payload);
})
})
}
我正在 fcmTokens
中为 firebase 云消息保存令牌。每个用户最多拥有三个令牌。
{
"uid1" : {
"-Kt8Skx5sa-IeXhKBs4G" : {
"uid1" : "token1"
}
},
"uid2" : {
"-Kt8Xt1lT7OeyKJBs1ps" : {
"uid2" : "token1"
},
"-Kt8Xt1lT7OeyKJz892k" : {
"uid2" : "token2"
}
}
}
ids
是一个数组,其中包含需要接收消息的用户标识。我不能
似乎获得了每个用户的令牌。
错误:
Error: Registration token(s) provided to sendToDevice() must be a non-empty string or a non-empty array.
下面是我现在的:
function sendFcm(ids) {
const payload = {
notification: {
title: 'You have been invited to an event!',
body: 'Event body',
icon: "https://placeimg.com/250/250/people"
}
};
for (const key in ids) {
if (ids.hasOwnProperty(key)) {
admin.database()
.ref(`/fcmTokens/${ids[key]}/{pushId}/${ids[key]}`)
.once('value')
.then(token => token.val())
.then(userFcmToken => {
return admin.messaging().sendToDevice(userFcmToken, payload)
})
.then(res => {
console.log("Sent Successfully"), res
})
.catch(err => {
console.log(err);
})
}
}
}
你的数据结构似乎对你正在做的事情来说效率低下。如果每个用户有一组令牌,请准确地保持:每个用户一组令牌。
{
"uid1" : {
"token1": true
},
"uid2" : {
"token1": true,
"token2": true,
"token3": true
}
}
然后:
for (const key in ids) {
if (ids.hasOwnProperty(key)) {
admin.database()
.ref(`/fcmTokens/${ids[key]}`)
.once('value')
.then(snapshot => {
snapshot.forEach((tokenSnapshot) => {
let userFcmToken = tokenSnapshot.key;
admin.messaging().sendToDevice(userFcmToken, payload);
})
})
}