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を返すと、関数は操作が完了するのを確実に待機します。

また、CloudFunctionsには厳しい時間制限があることに注意してください-デフォルトは60秒です。レコードが多すぎるとタイムアウトになる可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Cloud Functionsを使用してドキュメントのIDをドキュメント自体に書き込むにはどうすればよいですか?

分類Dev

DB内の各コレクションからN個のドキュメントを取得するにはどうすればよいですか?

分類Dev

Flutter:cloud_firestoreを使用してドキュメントからコレクションを取得するにはどうすればよいですか?

分類Dev

トランザクション内でFirebaseコレクションにドキュメントを追加するにはどうすればよいですか?

分類Dev

同じドキュメント番号を共有するドキュメントのコレクションから、Lotusscriptを使用して最後に作成されたドキュメントを特定するにはどうすればよいですか?

分類Dev

コレクション内のすべてのドキュメントを取得して、Firebase Firestoreにドキュメントが存在するかどうかを確認するにはどうすればよいですか?

分類Dev

Mongooseでコレクションからすべてのドキュメントを削除するにはどうすればよいですか?

分類Dev

SwiftでFirebaseを使用して、コレクションからドキュメントをプルしてテキストビューに表示するにはどうすればよいですか?

分類Dev

Firestoreのコレクションからすべてのドキュメントを取得するにはどうすればよいですか?

分類Dev

FirestoreのドキュメントからすべてのコレクションIDを取得するにはどうすればよいですか?

分類Dev

FaunaDBのコレクションからすべてのドキュメントを取得するにはどうすればよいですか?

分類Dev

swift uiのautoidを使用して、フィールドを含む新しいドキュメントをFirebaseコレクションに追加するにはどうすればよいですか

分類Dev

swift uiのautoidを使用して、フィールドを含む新しいドキュメントをFirebaseコレクションに追加するにはどうすればよいですか

分類Dev

mongoエンジンを使用して、特定のフィールドを含むコレクションからドキュメントをフェッチするにはどうすればよいですか?

分類Dev

コレクションをマージして同じドキュメントスキーマを取得するにはどうすればよいですか?

分類Dev

Flutterを使用してFirestoreのuidドキュメント内にコレクションを作成するにはどうすればよいですか?

分類Dev

MarkLogicでURIとコレクション名を渡してドキュメントを検索するにはどうすればよいですか?

分類Dev

MongoDB-すべてのコレクションから他のすべての関連ドキュメントを見つけるにはどうすればよいですか。1つのIDにしかアクセスできません

分類Dev

ReactiveMongo:コレクションから複数のドキュメントをランダムに選択するにはどうすればよいですか?

分類Dev

次のJSONをMongoDBコレクションに別のドキュメントとして挿入するにはどうすればよいですか?

分類Dev

FireStore Swift 4:コレクション内のすべてのドキュメントの総数を取得し、各ドキュメントの詳細を取得するにはどうすればよいですか?

分類Dev

mongoDBコレクションから100を超えるドキュメントをpromiseで印刷するにはどうすればよいですか?

分類Dev

Firebase / Google Cloud Firestoreのコレクションに追加された最新のドキュメントを取得するにはどうすればよいですか?

分類Dev

コレクションを最初に循環した後、属性の配列を列に書き込むにはどうすればよいですか?

分類Dev

サブコレクションを削除せずにFirebaseConsoleからドキュメントを手動で削除するときに、onDelete firebase関数をトリガーするにはどうすればよいですか?

分類Dev

Bashスクリプトでヒアドキュメントをファイルに書き込むにはどうすればよいですか?

分類Dev

Firebaseのコレクションに複数のドキュメントを追加するにはどうすればよいですか?

分類Dev

コレクションから1つのドキュメントを取得し、ion-selectですべてのドキュメントを一覧表示するにはどうすればよいですか?

分類Dev

パンダを使用してExcelシートの一部のセルにコメントを書き込むにはどうすればよいですか?

Related 関連記事

  1. 1

    Cloud Functionsを使用してドキュメントのIDをドキュメント自体に書き込むにはどうすればよいですか?

  2. 2

    DB内の各コレクションからN個のドキュメントを取得するにはどうすればよいですか?

  3. 3

    Flutter:cloud_firestoreを使用してドキュメントからコレクションを取得するにはどうすればよいですか?

  4. 4

    トランザクション内でFirebaseコレクションにドキュメントを追加するにはどうすればよいですか?

  5. 5

    同じドキュメント番号を共有するドキュメントのコレクションから、Lotusscriptを使用して最後に作成されたドキュメントを特定するにはどうすればよいですか?

  6. 6

    コレクション内のすべてのドキュメントを取得して、Firebase Firestoreにドキュメントが存在するかどうかを確認するにはどうすればよいですか?

  7. 7

    Mongooseでコレクションからすべてのドキュメントを削除するにはどうすればよいですか?

  8. 8

    SwiftでFirebaseを使用して、コレクションからドキュメントをプルしてテキストビューに表示するにはどうすればよいですか?

  9. 9

    Firestoreのコレクションからすべてのドキュメントを取得するにはどうすればよいですか?

  10. 10

    FirestoreのドキュメントからすべてのコレクションIDを取得するにはどうすればよいですか?

  11. 11

    FaunaDBのコレクションからすべてのドキュメントを取得するにはどうすればよいですか?

  12. 12

    swift uiのautoidを使用して、フィールドを含む新しいドキュメントをFirebaseコレクションに追加するにはどうすればよいですか

  13. 13

    swift uiのautoidを使用して、フィールドを含む新しいドキュメントをFirebaseコレクションに追加するにはどうすればよいですか

  14. 14

    mongoエンジンを使用して、特定のフィールドを含むコレクションからドキュメントをフェッチするにはどうすればよいですか?

  15. 15

    コレクションをマージして同じドキュメントスキーマを取得するにはどうすればよいですか?

  16. 16

    Flutterを使用してFirestoreのuidドキュメント内にコレクションを作成するにはどうすればよいですか?

  17. 17

    MarkLogicでURIとコレクション名を渡してドキュメントを検索するにはどうすればよいですか?

  18. 18

    MongoDB-すべてのコレクションから他のすべての関連ドキュメントを見つけるにはどうすればよいですか。1つのIDにしかアクセスできません

  19. 19

    ReactiveMongo:コレクションから複数のドキュメントをランダムに選択するにはどうすればよいですか?

  20. 20

    次のJSONをMongoDBコレクションに別のドキュメントとして挿入するにはどうすればよいですか?

  21. 21

    FireStore Swift 4:コレクション内のすべてのドキュメントの総数を取得し、各ドキュメントの詳細を取得するにはどうすればよいですか?

  22. 22

    mongoDBコレクションから100を超えるドキュメントをpromiseで印刷するにはどうすればよいですか?

  23. 23

    Firebase / Google Cloud Firestoreのコレクションに追加された最新のドキュメントを取得するにはどうすればよいですか?

  24. 24

    コレクションを最初に循環した後、属性の配列を列に書き込むにはどうすればよいですか?

  25. 25

    サブコレクションを削除せずにFirebaseConsoleからドキュメントを手動で削除するときに、onDelete firebase関数をトリガーするにはどうすればよいですか?

  26. 26

    Bashスクリプトでヒアドキュメントをファイルに書き込むにはどうすればよいですか?

  27. 27

    Firebaseのコレクションに複数のドキュメントを追加するにはどうすればよいですか?

  28. 28

    コレクションから1つのドキュメントを取得し、ion-selectですべてのドキュメントを一覧表示するにはどうすればよいですか?

  29. 29

    パンダを使用してExcelシートの一部のセルにコメントを書き込むにはどうすればよいですか?

ホットタグ

アーカイブ