mirrorDistricts()
mirrorDistricts, generateMirrorDocFunction
Overview
The mirrorDistricts
function is part of a broader system designed to synchronize or mirror data across different Firestore collections, specifically within and between different applications or databases (e.g., mirroring data between gse-roar-admin
and gse-roar-assessment
Firestore databases). The function is powered by a helper function, generateMirrorDocFunction
, which dynamically handles the mirroring process for specified collections.
Helper Function: generateMirrorDocFunction
- Purpose: To generate a Firestore trigger function for mirroring document changes from one Firestore collection to another.
- Parameters:
- collection (string): The name of the Firestore collection to mirror documents to.
- Returns: A function configured to handle Firestore document write events.
Function Logic
- Event Handling: The returned function captures document write events, including creations, updates, and deletions.
- Data Handling:
- If the document snapshot is empty (e.g., the document was deleted), the corresponding document in the mirrored collection is also deleted.
- If the document exists, its data is written to or updated in the specified mirrored collection using the document's ID as a key.
- Database Operations:
- Delete Operation: If no data is present, the document in the mirrored collection is deleted.
- Set Operation: If data is present, it is set in the mirrored collection, effectively creating or updating the document.
Cloud Function: mirrorDistricts
- Trigger: Triggered by Firestore document write events on the
districts/{documentId}
document path. - Configuration:
- Document Path:
districts/{documentId}
- Timeout: 180 seconds, indicating the function has an extended execution time to handle potentially large data operations.
- Document Path:
- Function Execution: Utilizes
generateMirrorDocFunction
to create a specific instance that mirrors changes in thedistricts
collection to another Firestore collection designated for assessment data.
Example Use Case
- The
mirrorDistricts
function is used to ensure that any changes made to district documents in the administrative Firestore database are reflected in a separate Firestore database used for assessment purposes. This mirroring helps maintain data consistency across applications that rely on district information.
Error Handling and Security
- Error Handling: Both the helper and the Cloud Function include error checks to gracefully handle missing data and to ensure that operations on the Firestore database do not result in unhandled exceptions.
- Security Considerations:
- Permissions: Ensure that the function has appropriate permissions to read from and write to the specified Firestore collections.
- Data Integrity: Implement checks to validate the integrity of the data being mirrored, preventing potential synchronization issues or data corruption.
- Logging: Implement logging to track operations and capture any errors or anomalies during the mirroring process.
Deployment and Maintenance
- Deployment: Deploy using the Firebase CLI or through the Firebase Console, ensuring environment variables and Firebase project settings are configured correctly.
- Maintenance: Monitor the function’s performance and error rates. Update the mirroring logic and Firestore rules as the data schema evolves or as requirements change.