Package: dodo-sync su npm | Source: GitHub
Cosa puoi sincronizzare?
Scegli una combinazione qualsiasi di queste entità:Payments
Customers
Subscriptions
Licenses
scopes. Ogni esecuzione recupera ogni record negli ambiti selezionati e lo scrive utilizzando l’ID, quindi le righe esistenti vengono aggiornate sul posto invece di essere duplicate. Ogni pagina di record viene scritta nel database con una singola operazione batch.
Supporto dei database
Dodo Sync supporta MongoDB, PostgreSQL, MySQL 8.0.20 o versioni successive e ClickHouse. Il supporto per Snowflake e altri database, le pipeline ETL e la sincronizzazione in tempo reale sono in fase di sviluppo. Per contribuire a una nuova integrazione con un database, invia una pull request al repository GitHub.Per iniziare
Usa Dodo Sync tramite la CLI per una configurazione rapida oppure direttamente nel tuo codice per integrarlo nella tua applicazione. Entrambi i metodi offrono le stesse funzionalità.Utilizzo della CLI
Installa la CLI a livello globale per eseguirla da qualsiasi posizione:Esecuzione della CLI
La CLI supporta due modalità: interattiva per una configurazione guidata e manuale per una configurazione diretta. Modalità interattiva: esegui il comando senza argomenti per avviare la procedura guidata di configurazione.Argomenti della CLI
number
obbligatorio
Intervallo di sincronizzazione in secondi. La CLI viene eseguita continuamente con questo intervallo. Per una sincronizzazione una tantum, usa
.run() nel tuo codice.string
obbligatorio
Tipo di database:
"mongodb", "postgres", "mysql" o "clickhouse".string
obbligatorio
URI di connessione al database:
- MongoDB:
mongodb://localhost:27017omongodb+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
obbligatorio
Elenco separato da virgole delle entità da sincronizzare:
licences, payments, customers, subscriptions. Esempio: "payments,customers".string
obbligatorio
La tua chiave API di Dodo Payments da Developer → API Keys. Usa una chiave della stessa modalità di
--env.string
obbligatorio
Ambiente:
"live_mode" o "test_mode".number
Limite di frequenza in richieste al secondo. Controlla la velocità con cui il motore di sincronizzazione effettua le richieste API. Il valore predefinito è
10; i valori pari o superiori a 100 disattivano il throttling.Utilizzo nel codice
Integra direttamente la funzionalità di sincronizzazione nella tua applicazione. Installala come dipendenza:Sincronizzazione automatica (basata su intervallo)
Esegui la sincronizzazione continuamente a intervalli regolari:Sincronizzazione manuale
Attiva le operazioni di sincronizzazione su richiesta, ad esempio da un cron job, un endpoint API o una funzione serverless:Esecuzione su Serverless
Su Vercel, AWS Lambda o piattaforme simili:- Chiama
.disconnect()in un bloccofinally, come nell’esempio precedente, in modo che le connessioni non rimangano aperte tra un’invocazione e l’altra. - Usa il runtime Node.js. I runtime Edge non possono aprire connessioni al database.
- Aumenta il timeout della funzione. Una sincronizzazione di grandi dimensioni può richiedere più tempo del limite predefinito. Su Vercel, imposta
export const maxDuration = 60;. - Sincronizza meno ambiti per invocazione, ad esempio
scopes: ['payments'], per mantenere breve ogni esecuzione.
Esempio PostgreSQL
Esempio MySQL
Esempio ClickHouse
Opzioni del costruttore
string
obbligatorio
Tipo di database:
"mongodb", "postgres", "mysql" o "clickhouse".string
obbligatorio
Stringa di connessione al database:
- MongoDB:
mongodb://localhost:27017omongodb+srv://... - PostgreSQL:
postgresql://user:password@localhost:5432/mydb - MySQL:
mysql://user:password@localhost:3306/mydb - ClickHouse:
http://localhost:8123
string[]
obbligatorio
Array di entità da sincronizzare:
"licences", "payments", "customers", "subscriptions". Includi qualsiasi combinazione.object
obbligatorio
Configurazione dell’API Dodo Payments. Consulta i tipi dell’SDK TypeScript per tutte le opzioni.Proprietà obbligatorie:
bearerToken: la tua chiave API Dodo Paymentsenvironment:"test_mode"o"live_mode"
number
Tempo in secondi tra le sincronizzazioni automatiche. Obbligatorio per
.start(), facoltativo per .run().number
Limite di frequenza in richieste al secondo. Il valore predefinito è
10; i valori pari o superiori a 100 disattivano il throttling.Informazioni importanti
Aggiornamento dalla versione 0.x
La versione 1.0 modifica il modo in cui vengono archiviati i dati MongoDB e aumenta il requisito per MySQL. Prima dell’aggiornamento:- MongoDB: elimina la collection
licencesesistente. I documenti delle licenze vengono ora archiviati in base aidinvece che in base asubscription_id, e la sincronizzazione successiva ripopola la collection. - MongoDB: controlla l’URI di connessione. Ora i dati vengono scritti nel database indicato dall’URI, non sempre in
dodopayments_sync. Per continuare a utilizzare i dati esistenti, inseriscidodopayments_syncnell’URI oppure ometti il database. - MySQL: esegui l’aggiornamento a MySQL 8.0.20 o versioni successive.