小编Uma*_*mar的帖子

是否有任何解决方案可以等待嵌套的 forEach 直到在 node.js 中使用 async/await 返回结果

我正在研究 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

6
推荐指数
1
解决办法
1554
查看次数

如何在 mongoDB 集合中分别保存日期和时间?

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)

time date mongoose mongodb node.js

4
推荐指数
1
解决办法
316
查看次数