Skip to main content
अपने Dodo Payments डेटा को एनालिटिक्स, रिपोर्टिंग और इंटीग्रेशन के लिए अपने डेटाबेस में सिंक करें। सिंक इंजन स्वचालित रूप से payments, customers, subscriptions, और licenses को MongoDB, PostgreSQL, MySQL या ClickHouse में दोहराता है।
पैकेज: npm पर dodo-sync | स्रोत: GitHub

आप क्या-क्या Sync कर सकते हैं?

इन entities का कोई भी संयोजन चुनें:

Payments

सभी payment transactions, जिनमें one-time payments, refunds और status updates शामिल हैं।

Customers

Customer profiles, contact information और metadata।

Subscriptions

Subscription data, billing cycles और status changes।

Licenses

License keys, activations और status updates।
scopes पैरामीटर का उपयोग करके निर्दिष्ट करें कि किन entities को sync करना है। प्रत्येक run चयनित scopes में मौजूद हर record को fetch करता है और उसे ID के आधार पर लिखता है, इसलिए मौजूदा rows को duplicate करने के बजाय वहीं update किया जाता है। Records के प्रत्येक page को आपके database में एक single batch में लिखा जाता है।

Database Support

Dodo Sync MongoDB, PostgreSQL, MySQL 8.0.20 या उसके बाद के versions और ClickHouse को support करता है। Snowflake और अन्य databases, ETL pipelines तथा realtime sync के लिए support development में है। नई database integration में योगदान देने के लिए GitHub repository में pull request सबमिट करें।

शुरुआत करना

त्वरित setup के लिए Dodo Sync को CLI के माध्यम से या अपने application में integration के लिए अपने code में programmatically उपयोग करें। दोनों methods समान functionality प्रदान करते हैं।

CLI का उपयोग करना

CLI को globally install करें ताकि इसे कहीं से भी चला सकें:

CLI चलाना

CLI दो modes सपोर्ट करता है: guided setup के लिए interactive, और direct configuration के लिए manual। Interactive mode: setup wizard शुरू करने के लिए बिना arguments के चलाएँ।
Manual mode: wizard को छोड़ने के लिए arguments सीधे पास करें।
उदाहरण:

CLI arguments

number
आवश्यक
सेकंड में sync interval। CLI इसी interval पर लगातार चलता है। One-time sync के लिए अपने code में .run() का उपयोग करें।
string
आवश्यक
Database type: "mongodb", "postgres", "mysql", या "clickhouse"।
string
आवश्यक
आपके database का connection URI:
  • MongoDB: mongodb://localhost:27017 या mongodb+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
आवश्यक
Sync की जाने वाली entities की comma-separated list: licences, payments, customers, subscriptions। उदाहरण: "payments,customers"।
string
आवश्यक
Developer → API Keys से प्राप्त आपका Dodo Payments API key। उसी mode की key का उपयोग करें जिस mode में --env है।
string
आवश्यक
Environment: "live_mode" या "test_mode"।
number
प्रति सेकंड requests में rate limit। यह नियंत्रित करता है कि sync engine कितनी तेज़ी से API requests करता है। डिफ़ॉल्ट 10 है; 100 या उससे अधिक मान throttling बंद कर देते हैं।

अपने code में उपयोग करना

Sync feature को सीधे अपने application में integrate करें। इसे dependency के रूप में install करें:

Automatic Sync (Interval-based)

नियमित intervals पर लगातार sync चलाएँ:
.start() का उपयोग करते समय interval option आवश्यक है। Process रुकने तक sync निर्दिष्ट interval पर लगातार चलता रहता है।

Manual Sync

sync operations को on-demand trigger करें, जैसे किसी cron job, API endpoint या serverless function से:
manual sync के लिए interval option आवश्यक नहीं है। जब भी sync करना हो, .run() को call करें। .run() तभी resolve होता है जब database में सभी writes पूरी हो जाएँ। .close(), .disconnect() का alias है।

Serverless पर चलाना

Vercel, AWS Lambda या इसी तरह के platforms पर:
  • .disconnect() को finally block में call करें, जैसा कि ऊपर दिए गए example में है, ताकि invocations के बीच connections खुले न रहें।
  • Node.js runtime का उपयोग करें। Edge runtimes database connections open नहीं कर सकते।
  • Function timeout बढ़ाएँ। बड़े sync को default limit से अधिक समय लग सकता है। Vercel पर export const maxDuration = 60; सेट करें।
  • प्रत्येक invocation में कम scopes sync करें, जैसे scopes: ['payments'], ताकि हर run छोटा रहे।

PostgreSQL Example

MySQL Example

ClickHouse Example

Constructor Options

string
आवश्यक
Database type: "mongodb", "postgres", "mysql" या "clickhouse"।
string
आवश्यक
आपके database के लिए connection string:
  • MongoDB: mongodb://localhost:27017 या mongodb+srv://...
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
string[]
आवश्यक
sync करने के लिए entities का array: "licences", "payments", "customers", "subscriptions"। किसी भी combination को शामिल करें।
object
आवश्यक
Dodo Payments API configuration। सभी options के लिए TypeScript SDK types देखें।Required properties:
  • bearerToken: आपकी Dodo Payments API key
  • environment: "test_mode" या "live_mode"
number
automatic syncs के बीच seconds में समय। .start() के लिए required और .run() के लिए optional।
number
requests per second में rate limit। Default रूप से 10; 100 या उससे अधिक values throttling बंद कर देती हैं।

महत्वपूर्ण जानकारी

MongoDB: Collections (subscriptions, payments, licences, customers) आपके connection URI में दिए गए database में बनाई जाती हैं, जैसे mongodb://localhost:27017/my_database। यदि URI में कोई database निर्दिष्ट नहीं है, तो Dodo Sync dodopayments_sync का उपयोग करता है।PostgreSQL: Tables (Subscriptions, Payments, Licenses, Customers) आपके connection URI में निर्दिष्ट database में बनाई जाती हैं। Data को JSONB के रूप में store किया जाता है।MySQL: MySQL 8.0.20 या उसके बाद का version आवश्यक है। Tables (Subscriptions, Payments, Licenses, Customers) आपके connection URI में निर्दिष्ट database में बनाई जाती हैं। Data को JSON के रूप में store किया जाता है।ClickHouse: Tables (Subscriptions, Payments, Licenses, Customers) ReplacingMergeTree engine का उपयोग करके बनाई जाती हैं। Query करते समय deduplicated results सुनिश्चित करने के लिए FINAL keyword का उपयोग करें।

0.x से upgrade करना

Version 1.0 MongoDB data store करने का तरीका बदलता है और MySQL requirement बढ़ाता है। Upgrade करने से पहले:
  • MongoDB: अपनी मौजूदा licences collection को drop करें। License documents अब subscription_id के बजाय license id के आधार पर store किए जाते हैं और अगला sync collection को फिर से populate कर देगा।
  • MongoDB: अपना connection URI जाँचें। Data अब URI में निर्दिष्ट database में लिखा जाता है, हमेशा dodopayments_sync में नहीं। अपने मौजूदा data का उपयोग जारी रखने के लिए URI में dodopayments_sync डालें या database को छोड़ दें।
  • MySQL: MySQL 8.0.20 या उसके बाद के version पर upgrade करें।

अतिरिक्त संसाधन

GitHub Repository

source code देखें, issues report करें या improvements में योगदान दें

npm Package

package details और installation instructions देखें
अंतिम संशोधन 8 अक्टूबर 2026