Package: npm의 dodo-sync | Source: GitHub
무엇을 동기화할 수 있나요?
다음 entity를 원하는 조합으로 선택하세요:Payments
일회성 결제, 환불 및 상태 업데이트를 포함한 모든 결제 거래입니다.
Customers
고객 프로필, 연락처 정보 및 메타데이터입니다.
Subscriptions
구독 데이터, 결제 주기 및 상태 변경입니다.
Licenses
라이선스 키, 활성화 및 상태 업데이트입니다.
scopes 매개변수를 사용하여 동기화할 엔터티를 지정합니다. 실행할 때마다 선택한 범위의 모든 레코드를 가져와 ID별로 기록하므로 기존 행이 중복되지 않고 제자리에서 업데이트됩니다. 각 레코드 페이지는 단일 배치로 데이터베이스에 기록됩니다.
데이터베이스 지원
Dodo Sync는 MongoDB, PostgreSQL, 8.0.20 이상 버전의 MySQL, ClickHouse를 지원합니다. Snowflake 및 기타 데이터베이스, ETL 파이프라인, 실시간 sync에 대한 지원은 개발 중입니다. 새로운 데이터베이스 통합을 추가하려면 GitHub repository에 pull request를 제출하세요.시작하기
빠르게 설정하려면 CLI를 통해 Dodo Sync를 사용하고, 애플리케이션에 통합하려면 코드에서 programmatically 사용하세요. 두 방법 모두 동일한 기능을 제공합니다.CLI 사용
어디서나 실행할 수 있도록 CLI를 전역으로 설치하세요:CLI 실행
CLI는 두 가지 모드를 지원합니다. 안내에 따른 설정을 위한 interactive 모드와 직접 구성을 위한 manual 모드입니다. Interactive mode: 인수 없이 실행하여 설정 wizard를 시작합니다.CLI 인수
string
필수
데이터베이스 type:
"mongodb", "postgres", "mysql" 또는 "clickhouse"입니다.string
필수
데이터베이스의 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
필수
동기화할 entity의 쉼표로 구분된 목록입니다:
licences, payments, customers, subscriptions. 예시: "payments,customers".string
필수
Developer → API Keys에서 확인할 수 있는 Dodo Payments API key입니다.
--env와 동일한 mode의 key를 사용하세요.string
필수
Environment:
"live_mode" 또는 "test_mode"입니다.number
초당 requests 단위의 rate limit입니다. sync engine이 API requests를 수행하는 속도를 제어합니다. 기본값은
10이며, 100 이상의 값은 throttling을 해제합니다.코드에서 사용
sync 기능을 애플리케이션에 직접 통합합니다. dependency로 설치하세요:Automatic Sync (Interval-based)
일정한 interval로 sync를 계속 실행합니다:Manual Sync
cron job, API endpoint 또는 serverless function 등에서 필요할 때 sync 작업을 트리거합니다:Serverless에서 실행
Vercel, AWS Lambda 또는 유사한 플랫폼에서:- 위 예시와 같이
.disconnect()을finally블록에서 호출하여 invocation 간에 connection이 열린 상태로 유지되지 않도록 합니다. - Node.js runtime을 사용합니다. Edge runtime에서는 database connection을 열 수 없습니다.
- function timeout을 늘립니다. 대규모 sync는 기본 제한 시간보다 오래 걸릴 수 있습니다. Vercel에서는
export const maxDuration = 60;을 설정합니다. - 각 실행 시간을 짧게 유지하려면
scopes: ['payments']과 같이 invocation당 sync하는 scope 수를 줄입니다.
PostgreSQL 예시
MySQL 예시
ClickHouse 예시
Constructor 옵션
string
필수
데이터베이스 유형:
"mongodb", "postgres", "mysql" 또는 "clickhouse".string
필수
데이터베이스의 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[]
필수
동기화할 엔터티의 배열:
"licences", "payments", "customers", "subscriptions". 원하는 조합을 포함할 수 있습니다.object
필수
Dodo Payments API configuration입니다. 전체 옵션은 TypeScript SDK types를 참조하세요.필수 properties:
bearerToken: Dodo Payments API keyenvironment:"test_mode"또는"live_mode"
number
automatic sync 간의 간격(초)입니다.
.start()에는 필수이며, .run()에는 선택 사항입니다.number
초당 요청 수에 대한 rate limit입니다. 기본값은
10이며, 100 이상의 값은 throttling을 해제합니다.중요 정보
0.x에서 업그레이드
Version 1.0에서는 MongoDB 데이터 저장 방식이 변경되고 MySQL 요구 사항이 상향되었습니다. 업그레이드하기 전에 다음을 수행하세요:- MongoDB: 기존
licencescollection을 삭제합니다. License documents는 이제subscription_id대신 licenseid별로 저장되며, 다음 sync에서 collection이 다시 채워집니다. - MongoDB: connection URI를 확인합니다. 이제 데이터는 항상
dodopayments_sync이 아니라 URI에 지정된 데이터베이스에 기록됩니다. 기존 데이터를 계속 사용하려면 URI에dodopayments_sync을 입력하거나 데이터베이스를 생략합니다. - MySQL: MySQL 8.0.20 이상으로 업그레이드합니다.
추가 리소스
GitHub Repository
소스 코드를 확인하거나, issue를 신고하거나, 개선 사항에 기여
npm Package
package 세부 정보 및 설치 지침 확인