Paket: dodo-sync auf npm | Quelle: GitHub
Was können Sie synchronisieren?
Wählen Sie eine beliebige Kombination dieser Entitäten:Payments
Customers
Subscriptions
Licenses
scopes an, welche Entitäten synchronisiert werden sollen. Bei jedem Durchlauf wird jeder Datensatz in den ausgewählten Bereichen abgerufen und anhand seiner ID geschrieben, sodass vorhandene Zeilen direkt aktualisiert statt dupliziert werden. Jede Datensatzseite wird in einem einzigen Batch in Ihre Datenbank geschrieben.
Datenbankunterstützung
Dodo Sync unterstützt MongoDB, PostgreSQL, MySQL 8.0.20 oder höher sowie ClickHouse. Die Unterstützung für Snowflake und andere Datenbanken, ETL-Pipelines und die Echtzeit-Synchronisierung befindet sich in Entwicklung. Um eine neue Datenbankintegration beizusteuern, reichen Sie einen Pull Request im GitHub-Repository ein.Erste Schritte
Verwenden Sie Dodo Sync für eine schnelle Einrichtung über die CLI oder programmatisch in Ihrem Code, um es in Ihre Anwendung zu integrieren. Beide Methoden bieten dieselbe Funktionalität.Verwendung der CLI
Installieren Sie die CLI global, um sie von überall ausführen zu können:Ausführen der CLI
Die CLI unterstützt zwei Modi: interaktiv für eine angeleitete Einrichtung und manuell für eine direkte Konfiguration. Interaktiver Modus: Führen Sie den Befehl ohne Argumente aus, um den Einrichtungsassistenten zu starten.CLI-Argumente
number
erforderlich
Synchronisierungsintervall in Sekunden. Die CLI wird in diesem Intervall kontinuierlich ausgeführt. Für eine einmalige Synchronisierung verwenden Sie
.run() in Ihrem Code.string
erforderlich
Datenbanktyp:
"mongodb", "postgres", "mysql" oder "clickhouse".string
erforderlich
Verbindungs-URI für Ihre Datenbank:
- MongoDB:
mongodb://localhost:27017odermongodb+srv://user:pass@cluster.mongodb.net/ - PostgreSQL:
postgresql://user:password@localhost:5432/mydb - MySQL:
mysql://user:password@localhost:3306/mydb - ClickHouse:
http://localhost:8123
string
erforderlich
Kommagetrennte Liste der zu synchronisierenden Entitäten:
licences, payments, customers, subscriptions. Beispiel: "payments,customers".string
erforderlich
Ihr Dodo Payments API-Schlüssel aus Developer → API Keys. Verwenden Sie einen Schlüssel aus demselben Modus wie
--env.string
erforderlich
Umgebung:
"live_mode" oder "test_mode".number
Ratenbegrenzung in Anfragen pro Sekunde. Steuert, wie schnell die Sync-Engine API-Anfragen stellt. Der Standardwert ist
10; Werte von 100 oder höher deaktivieren die Drosselung.Verwendung in Ihrem Code
Integrieren Sie die Synchronisierungsfunktion direkt in Ihre Anwendung. Installieren Sie sie als Abhängigkeit:Automatische Synchronisierung (intervallbasiert)
Führen Sie die Synchronisierung in regelmäßigen Abständen kontinuierlich aus:Manuelle Synchronisierung
Lösen Sie Synchronisierungsvorgänge bei Bedarf aus, beispielsweise über einen cron job, einen API-Endpunkt oder eine serverlose Funktion:Ausführung auf Serverless
Auf Vercel, AWS Lambda oder ähnlichen Plattformen:- Rufen Sie
.disconnect()in einemfinally-Block auf, wie im obigen Beispiel, damit Verbindungen zwischen den Aufrufen nicht offen bleiben. - Verwenden Sie die Node.js-Laufzeitumgebung. Edge-Laufzeitumgebungen können keine Datenbankverbindungen öffnen.
- Erhöhen Sie das Funktions-Timeout. Eine große Synchronisierung kann länger als das standardmäßige Limit dauern. Legen Sie auf Vercel
export const maxDuration = 60;fest. - Synchronisieren Sie pro Aufruf weniger Bereiche, beispielsweise
scopes: ['payments'], damit jeder Durchlauf kurz bleibt.
PostgreSQL-Beispiel
MySQL-Beispiel
ClickHouse-Beispiel
Konstruktoroptionen
string
erforderlich
Datenbanktyp:
"mongodb", "postgres", "mysql" oder "clickhouse".string
erforderlich
Verbindungszeichenfolge für Ihre Datenbank:
- MongoDB:
mongodb://localhost:27017odermongodb+srv://... - PostgreSQL:
postgresql://user:password@localhost:5432/mydb - MySQL:
mysql://user:password@localhost:3306/mydb - ClickHouse:
http://localhost:8123
string[]
erforderlich
Array der zu synchronisierenden Entitäten:
"licences", "payments", "customers", "subscriptions". Jede Kombination ist möglich.object
erforderlich
Konfiguration der Dodo Payments API. Eine vollständige Übersicht der Optionen finden Sie unter TypeScript SDK types.Erforderliche Eigenschaften:
bearerToken: Ihr Dodo Payments API-Schlüsselenvironment:"test_mode"oder"live_mode"
number
Zeit in Sekunden zwischen automatischen Synchronisierungen. Erforderlich für
.start(), optional für .run().number
Ratenbegrenzung in Anfragen pro Sekunde. Der Standardwert ist
10; Werte von 100 oder höher deaktivieren die Drosselung.Wichtige Informationen
Upgrade von 0.x
Version 1.0 ändert die Speicherung von MongoDB-Daten und erhöht die MySQL-Anforderung. Vor dem Upgrade:- MongoDB: Löschen Sie Ihre vorhandene
licences-Collection. Lizenzdokumente werden jetzt nach der Lizenz-idstatt nachsubscription_idgespeichert, und die nächste Synchronisierung füllt die Collection erneut. - MongoDB: Prüfen Sie Ihre Verbindungs-URI. Daten werden jetzt in die Datenbank geschrieben, die in der URI angegeben ist, und nicht immer in
dodopayments_sync. Um Ihre vorhandenen Daten weiterhin zu verwenden, fügen Siedodopayments_syncin die URI ein oder lassen Sie die Datenbank weg. - MySQL: Führen Sie ein Upgrade auf MySQL 8.0.20 oder höher durch.