Package: dodo-sync trên npm | Source: GitHub
Bạn có thể đồng bộ những gì?
Chọn bất kỳ tổ hợp nào trong các entity này:Payments
Tất cả giao dịch thanh toán, bao gồm thanh toán một lần, hoàn tiền và cập nhật trạng thái.
Customers
Hồ sơ khách hàng, thông tin liên hệ và metadata.
Subscriptions
Dữ liệu gói đăng ký, chu kỳ thanh toán và thay đổi trạng thái.
Licenses
License key, lượt kích hoạt và cập nhật trạng thái.
scopes. Mỗi lần chạy sẽ lấy mọi record trong các scope đã chọn và ghi theo ID, vì vậy các row hiện có được cập nhật tại chỗ thay vì bị trùng lặp. Mỗi page record được ghi vào database của bạn trong một batch duy nhất.
Hỗ trợ cơ sở dữ liệu
Dodo Sync hỗ trợ MongoDB, PostgreSQL, MySQL 8.0.20 trở lên và ClickHouse. Hỗ trợ Snowflake và các database khác, pipeline ETL cũng như đồng bộ realtime đang được phát triển. Để đóng góp một tích hợp cơ sở dữ liệu mới, hãy gửi pull request đến repository GitHub.Bắt đầu
Sử dụng Dodo Sync thông qua CLI để thiết lập nhanh hoặc tích hợp theo cách lập trình vào code của bạn. Cả hai phương thức đều cung cấp cùng một chức năng.Sử dụng CLI
Cài đặt CLI trên toàn hệ thống để chạy từ bất kỳ đâu:Chạy CLI
CLI hỗ trợ hai chế độ: interactive để được hướng dẫn thiết lập và manual để cấu hình trực tiếp. Chế độ interactive: Chạy không có đối số để bắt đầu trình hướng dẫn thiết lập.Đối số CLI
number
bắt buộc
Khoảng thời gian đồng bộ tính bằng giây. CLI chạy liên tục theo khoảng thời gian này. Để đồng bộ một lần, hãy sử dụng
.run() trong code của bạn.string
bắt buộc
Loại cơ sở dữ liệu:
"mongodb", "postgres", "mysql" hoặc "clickhouse".string
bắt buộc
URI kết nối đến cơ sở dữ liệu của bạn:
- MongoDB:
mongodb://localhost:27017hoặcmongodb+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
bắt buộc
Danh sách entity cần đồng bộ, được phân tách bằng dấu phẩy:
licences, payments, customers, subscriptions. Ví dụ: "payments,customers".string
bắt buộc
API key Dodo Payments của bạn từ Developer → API Keys. Sử dụng key ở cùng chế độ với
--env.string
bắt buộc
Môi trường:
"live_mode" hoặc "test_mode".number
Giới hạn tốc độ tính bằng request mỗi giây. Kiểm soát tốc độ công cụ đồng bộ thực hiện request API. Mặc định là
10; giá trị 100 trở lên sẽ tắt throttling.Sử dụng trong Code của bạn
Tích hợp trực tiếp tính năng đồng bộ vào ứng dụng của bạn. Cài đặt dưới dạng dependency:Đồng bộ tự động (theo khoảng thời gian)
Chạy đồng bộ liên tục theo các khoảng thời gian đều đặn:Đồng bộ thủ công
Kích hoạt các thao tác đồng bộ theo yêu cầu, chẳng hạn từ cron job, API endpoint hoặc serverless function:Chạy trên Serverless
Trên Vercel, AWS Lambda hoặc các nền tảng tương tự:- Gọi
.disconnect()trong blockfinally, như trong ví dụ trên, để các connection không duy trì mở giữa các lần invocation. - Sử dụng runtime Node.js. Edge runtime không thể mở các connection đến database.
- Tăng timeout của function. Một lần đồng bộ lớn có thể mất nhiều thời gian hơn giới hạn mặc định. Trên Vercel, đặt
export const maxDuration = 60;. - Đồng bộ ít scope hơn trong mỗi invocation, chẳng hạn
scopes: ['payments'], để mỗi lần chạy có thời lượng ngắn.
Ví dụ PostgreSQL
Ví dụ MySQL
Ví dụ ClickHouse
Các tùy chọn Constructor
string
bắt buộc
Loại database:
"mongodb", "postgres", "mysql" hoặc "clickhouse".string
bắt buộc
Connection string cho database của bạn:
- MongoDB:
mongodb://localhost:27017hoặcmongodb+srv://... - PostgreSQL:
postgresql://user:password@localhost:5432/mydb - MySQL:
mysql://user:password@localhost:3306/mydb - ClickHouse:
http://localhost:8123
string[]
bắt buộc
Mảng entity cần đồng bộ:
"licences", "payments", "customers", "subscriptions". Có thể bao gồm bất kỳ tổ hợp nào.object
bắt buộc
Cấu hình Dodo Payments API. Xem các type của TypeScript SDK để biết đầy đủ các tùy chọn.Các property bắt buộc:
bearerToken: API key Dodo Payments của bạnenvironment:"test_mode"hoặc"live_mode"
number
Thời gian tính bằng giây giữa các lần đồng bộ tự động. Bắt buộc đối với
.start(), tùy chọn đối với .run().number
Giới hạn tốc độ tính bằng request mỗi giây. Mặc định là
10; các giá trị từ 100 trở lên sẽ tắt throttling.Thông tin quan trọng
Nâng cấp từ 0.x
Version 1.0 thay đổi cách lưu trữ dữ liệu MongoDB và nâng yêu cầu đối với MySQL. Trước khi nâng cấp:- MongoDB: Xóa collection
licenceshiện có. Các license document hiện được lưu theo licenseidthay vìsubscription_id, và lần đồng bộ tiếp theo sẽ tạo lại collection. - MongoDB: Kiểm tra connection URI của bạn. Dữ liệu hiện được ghi vào database mà URI chỉ định, không phải luôn là
dodopayments_sync. Để tiếp tục sử dụng dữ liệu hiện có, hãy thêmdodopayments_syncvào URI hoặc bỏ database khỏi URI. - MySQL: Nâng cấp lên MySQL 8.0.20 trở lên.
Tài nguyên bổ sung
GitHub Repository
Xem mã nguồn, báo cáo issue hoặc đóng góp cải tiến
npm Package
Xem thông tin package và hướng dẫn cài đặt