如何订购Firebase集合,然后向每个文档中写入内容?

西蒙妮

嘿,我是Firebase云功能的新手,我想通过一个字段订购一个存储在firestore中的集合,然后在集合的每个文档中写入“位置”(这应该每60分钟发生一次)。在阅读了文档和Stackoverflow的一些建议之后,我尝试了以下方法。

exports.scheduledFunctionPosition = functions.pubsub.schedule('every 60 minutes').onRun((context) => {
    return admin.firestore().collection("example")
    .orderBy("number", "desc")
    .get()
    .then(querySnapshot => {
      if (!querySnapshot.empty) {
        for(let i =0;i<querySnapshot.size;i++){

          var queryDocumentSnapshotTmp = querySnapshot.docs[i];
          

          queryDocumentSnapshotTmp.ref.update({'position':i+1});

        }
        
  
        return null;
  
      } else {
       console.log("");
        return null;
      }
    });

由于我的编程技能不太好,因此我尝试了简单的方法,但是我认为异步编程存在问题。该代码非常适合编号最大的文档。但是,如果文档过多,此功能将不会更新最后的文档。有解决方案吗?

LeadDreamer

.update()也是异步的-你可能需要等待它,无论是使用.then()或切换到async/await我的个人风格是这样写的:

exports.scheduledFunctionPosition = functions
  .pubsub
  .schedule('every 60 minutes')
  .onRun(async (context) => {
  //will be returning a PROMISE
  let QuerySnapshot = await admin.firestore().collection("example")
    .orderBy("number", "desc")
    .get();
  
  return QuerySnapshot.empty
    ? (console.log(""), Promise.resolve(null))
    : Promise.all( //Promise.all waits for all promises in an array to complete
      //returns an array, but we use it for the array of promises
      QuerySnapshot.docs.map(async (doc, index) => {
        return doc.ref.update({'position':index+1}) //returns a promise
      });
  });

返回Promise可确保函数等待操作完成。

另请注意,云功能有严格的时间限制-默认值为60秒。如果您有太多记录,它们可能会超时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更新MongoDB集合中的每个文档?

来自分类Dev

等待分叉孩子向管道中写入内容,然后继续

来自分类Dev

DJANGO:如何在注册表中订购输入内容?

来自分类Dev

向文件写入内容,然后再次加载

来自分类Dev

如何在完全为空的现有.xml文件中写入内容?

来自分类Dev

如何在完全为空的现有.xml文件中写入内容?

来自分类Dev

如何根据脚本的不同输入,自动从多个文件的模板中写入内容?

来自分类Dev

如何向每个用户提供中央集合中的文档副本

来自分类Dev

Flutter如何对集合中的文档进行排序,每个字段都对每个文档编号

来自分类Dev

删除现有文件的内容,然后再次写入内容

来自分类Dev

Google Apps脚本:尝试打开文件夹中的每个文档,提取其目录,然后将其写入其他文档

来自分类Dev

如何查询文档列表然后更新firebase中的字段值?

来自分类Dev

如何在每个PDFObject div的顶部插入内容?

来自分类Dev

如何在集合中获取文档ID的列表而不在Firestore中获取文档的内容?

来自分类Dev

Firebase查询,从单个集合中获取多个文档,每个文档中的doc.id等于单独列表中的id

来自分类Dev

如何获取Firebase中另一个集合的文档中的集合

来自分类Dev

如何检索集合中的所有文档并查看Firebase Firestore中是否存在文档?

来自分类Dev

如何遍历所有P标签,然后将其innerHTML写入页面末尾的文档中?

来自分类Dev

如何在Rust中写入内存映射地址?

来自分类Dev

如何从Firebase文档中读取值并与变量进行比较,然后更改文档的值

来自分类Dev

如何从数据库中的每个集合中获取N个文档?

来自分类Dev

AQL-如何为集合C中的每个文档分配数组中的唯一值?

来自分类Dev

Firestore集合组查询-如何订购子集合所属的父文档?

来自分类Dev

Firebase Firestore如何考虑文档写入?

来自分类Dev

什么是sql中的firebase集合和文档?

来自分类Dev

Firebase获取集合中的文档长度

来自分类Dev

如何使用正则表达式扫描集合中的每个文档?

来自分类Dev

淡入内容,然后动画(flipInX)

来自分类Dev

无法写入内容:无限递归

Related 相关文章

  1. 1

    如何更新MongoDB集合中的每个文档?

  2. 2

    等待分叉孩子向管道中写入内容,然后继续

  3. 3

    DJANGO:如何在注册表中订购输入内容?

  4. 4

    向文件写入内容,然后再次加载

  5. 5

    如何在完全为空的现有.xml文件中写入内容?

  6. 6

    如何在完全为空的现有.xml文件中写入内容?

  7. 7

    如何根据脚本的不同输入,自动从多个文件的模板中写入内容?

  8. 8

    如何向每个用户提供中央集合中的文档副本

  9. 9

    Flutter如何对集合中的文档进行排序,每个字段都对每个文档编号

  10. 10

    删除现有文件的内容,然后再次写入内容

  11. 11

    Google Apps脚本:尝试打开文件夹中的每个文档,提取其目录,然后将其写入其他文档

  12. 12

    如何查询文档列表然后更新firebase中的字段值?

  13. 13

    如何在每个PDFObject div的顶部插入内容?

  14. 14

    如何在集合中获取文档ID的列表而不在Firestore中获取文档的内容?

  15. 15

    Firebase查询,从单个集合中获取多个文档,每个文档中的doc.id等于单独列表中的id

  16. 16

    如何获取Firebase中另一个集合的文档中的集合

  17. 17

    如何检索集合中的所有文档并查看Firebase Firestore中是否存在文档?

  18. 18

    如何遍历所有P标签,然后将其innerHTML写入页面末尾的文档中?

  19. 19

    如何在Rust中写入内存映射地址?

  20. 20

    如何从Firebase文档中读取值并与变量进行比较,然后更改文档的值

  21. 21

    如何从数据库中的每个集合中获取N个文档?

  22. 22

    AQL-如何为集合C中的每个文档分配数组中的唯一值?

  23. 23

    Firestore集合组查询-如何订购子集合所属的父文档?

  24. 24

    Firebase Firestore如何考虑文档写入?

  25. 25

    什么是sql中的firebase集合和文档?

  26. 26

    Firebase获取集合中的文档长度

  27. 27

    如何使用正则表达式扫描集合中的每个文档?

  28. 28

    淡入内容,然后动画(flipInX)

  29. 29

    无法写入内容:无限递归

热门标签

归档