migrating-nango-deletion-detection
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMigrating Nango Deletion Detection
迁移Nango删除检测功能
Do this
操作步骤
- Find legacy usage:
deleteRecordsFromPreviousExecutions(- /
trackDeletes:track_deletes
- For each sync + model that needs automatic deletion detection:
- Add at the start of
await nango.trackDeletesStart('ModelName')(before fetching/saving).exec - Replace with
await nango.deleteRecordsFromPreviousExecutions('ModelName').await nango.trackDeletesEnd('ModelName') - Keep after all
trackDeletesEnd/batchSave/batchUpdatecalls.batchDelete
- Add
- Safety:
- Only call if the full dataset was fetched + saved between
trackDeletesEndandtrackDeletesStart(otherwise you can cause false deletions).trackDeletesEnd - Prefer letting exceptions bubble. If you , re-throw when data is incomplete.
catch
- Only call
- 查找旧版用法:
deleteRecordsFromPreviousExecutions(- /
trackDeletes:track_deletes
- 对每个需要自动删除检测的同步任务+模型:
- 在函数开头(获取/保存数据前)添加
exec。await nango.trackDeletesStart('ModelName') - 将替换为
await nango.deleteRecordsFromPreviousExecutions('ModelName')。await nango.trackDeletesEnd('ModelName') - 确保在所有
trackDeletesEnd/batchSave/batchUpdate调用之后执行。batchDelete
- 在
- 注意事项:
- 仅当在和
trackDeletesStart之间已完整获取并保存全部数据集时,才调用trackDeletesEnd(否则可能导致误删)。trackDeletesEnd - 建议让异常自然抛出。如果使用捕获异常,当数据不完整时请重新抛出。
catch
- 仅当在
Checkpointed full refresh (multi-execution)
基于检查点的全量刷新(多执行实例)
- Call at the beginning of each execution in the refresh window (it is safe/idempotent while the window is open).
trackDeletesStart('ModelName') - Call only in the execution that finishes saving the full dataset.
trackDeletesEnd('ModelName')
- 在刷新窗口内的每个执行实例开始时调用(在窗口开启期间调用是安全且幂等的)。
trackDeletesStart('ModelName') - 仅在完成全量数据集保存的那个执行实例中调用。
trackDeletesEnd('ModelName')
Tests
测试
- Re-record mocks after code changes:
nango dryrun <sync-name> <connection-id> --validate -e dev --no-interactive --auto-confirmnango dryrun <sync-name> <connection-id> --save -e dev --no-interactive --auto-confirmnango generate:tests && npm test
- Never hand-edit .
*.test.json
- 代码变更后重新录制模拟数据:
nango dryrun <sync-name> <connection-id> --validate -e dev --no-interactive --auto-confirmnango dryrun <sync-name> <connection-id> --save -e dev --no-interactive --auto-confirmnango generate:tests && npm test
- 请勿手动编辑文件。
*.test.json
Before/after
前后对比
ts
// Before
for await (const page of nango.paginate(cfg)) {
await nango.batchSave(page, 'Ticket');
}
await nango.deleteRecordsFromPreviousExecutions('Ticket');ts
// After
await nango.trackDeletesStart('Ticket');
for await (const page of nango.paginate(cfg)) {
await nango.batchSave(page, 'Ticket');
}
await nango.trackDeletesEnd('Ticket');ts
// 旧版代码
for await (const page of nango.paginate(cfg)) {
await nango.batchSave(page, 'Ticket');
}
await nango.deleteRecordsFromPreviousExecutions('Ticket');ts
// 新版代码
await nango.trackDeletesStart('Ticket');
for await (const page of nango.paginate(cfg)) {
await nango.batchSave(page, 'Ticket');
}
await nango.trackDeletesEnd('Ticket');