我正在研究 FCM,需要频道/房间中的所有成员的设备令牌来发送推送通知,并且每个成员都有多个设备,为此我需要两个 for 循环。
我正在将 async/await 与 firestore 查询一起使用,但它不会等待结果,而是在后台处理它并移至需要结果数据的下一条语句。
const notification = async (channelId) => {
let tokens = []
const members = await db.collection('channels/' + channelId + '/members').get();
await members.forEach(async (member) => {
const deviceTokens = await db.collection('users/' + member.id + '/devices').get();
await deviceTokens.forEach(async (token) => {
console.log(token.id);
await tokens.push(token.data().token);
})
})
console.log(tokens);
return await sendPush(tokens); // calling other functions
}
Run Code Online (Sandbox Code Playgroud)
我希望输出是tokens = ['token1', 'token2', 'token3'],但实际输出是tokens = []
callback node.js async-await google-cloud-functions firebase-cloud-messaging
MongoDB 提供“Date”数据类型,使用它我们可以保存完整的日期时间。最好的方法是什么?想要这样做,因为需要存储特定“从时间”和“到时间”的多个“日期”
将日期和时间指定为“Date”数据类型,但在“空间验证失败:timeFrom:在路径“timeFrom”处的值“12:52”转换为日期失败,timeTo:转换为日期失败”之后出现此错误路径“timeTo”处的值“01:52”
let selectedDates = [
"2019-09-16",
"2019-09-17",
"2019-09-20"
]
let dateFrom = moment('2019-09-16T12:52').format('hh:mm')
let dateTo = moment('2019-09-16T12:52').format('hh:mm')
let collection = new someCollection({
selectedDates: param.selectedDates,
timeFrom: dateFrom,
timeTo: dateTo,
})
collection.save();
Run Code Online (Sandbox Code Playgroud)
预期输出:
{
"selectedDates": [
"2019-09-16",
"2019-09-17",
"2019-09-20"
],
"timeFrom": 05:10,
"timeTo": 05:50
}
Run Code Online (Sandbox Code Playgroud)