2015-06-26 15 views
6

Trong khi cố gắng tích hợp di động couchbase (phiên bản 1.1.0) trong ứng dụng di động lai của chúng tôi (ionic), chúng tôi gặp sự cố với bản sao đẩy trên iOS.Sao chép di động Couchbase thông qua REST-API

Tại một số thời điểm trong ứng dụng (sau khi cơ sở dữ liệu cục bộ đã được tạo và vv) một tài liệu thiết kế với một số dạng xem được tạo thành công. Tiếp tục đẩy và kéo nhân rộng được tạo và bắt đầu.

Khi bỏ phiếu cho trạng thái sao chép đẩy, chúng tôi nhận thấy rằng nó đã dừng (không bình thường đối với sao chép liên tục) ngay sau khi bắt đầu.

Couchbase di động trả lời với một lỗi (404)

WARNING: CBL_Pusher[http://server:4985/bucket-sync-gateway]: _bulk_docs got an error: { 
    error = "bad_request"; 
    id = "_design/app"; 
    reason = "Invalid doc ID"; 
    status = 400; 
} 

Cổng sync đăng nhập một lỗi tương tự:

BulkDocs: Doc "_design/app" --> 400 Invalid doc ID (400 Invalid doc ID) 

này chỉ xảy ra trên iOS. Phiên bản Android không có vấn đề với bản sao (có thể tài liệu thiết kế bị bỏ qua?)

  • Tại sao bản sao cố đồng bộ hóa tài liệu thiết kế trên ios và không trên android?
  • Tài liệu thiết kế có được đồng bộ hóa không?
  • Có cách nào để ngăn một số tài liệu nhất định được đồng bộ hóa không? (Bản gốc của api cung cấp một cơ chế lọc trên bản sao, nhưng phần còn lại-api không)

Bất kỳ ý tưởng gì có thể là vấn đề ở đây?

Chúc mừng,

Bert

Trả lời

2

Những phiên bản của Couchbase Lite và Sync Cổng bạn đang sử dụng? Tôi tin rằng hành vi đã được cải thiện trong phiên bản 1.1 của mỗi. Cụ thể, Sync Gateway hiện trả về 403 Forbidden thay vì 400 Bad Request khi một khách hàng cố tải lên một tài liệu thiết kế. Trình sao chép Couchbase Lite sẽ tiếp tục theo sau trạng thái này thay vì dừng bằng lỗi.

Tài liệu thiết kế có vấn đề vì chúng thường chứa mã thực thi (JavaScript) ở dạng bản đồ, chức năng giảm hoặc lọc. Vì lý do bảo mật, Sync Gateway (như CouchDB) sẽ không cho phép một khách hàng không phải quản trị viên tải lên một.

Tệ hơn nữa, có thể vi phạm thỏa thuận nhà phát triển Apple của bạn để ứng dụng iOS của bạn tải xuống tài liệu thiết kế vì ứng dụng không được phép thực thi mã được tải xuống. (Lý do tôi nói "có thể" là vì ngoại lệ là mã JavaScript đang chạy trong trình duyệt web. Tài liệu thiết kế chứa JS và mã ứng dụng PhoneGap của bạn không chạy trong trình duyệt, nhưng chức năng bản đồ/giảm/lọc không hoạt động trình duyệt nhưng trong một bối cảnh JS riêng biệt được gọi bởi Couchbase Lite. Tôi không phải là luật sư và tôi không biết Apple sẽ nghĩ gì về điều đó. Theo tôi biết thì nó không bao giờ xuất hiện.)

—Jens Alfke (Mobile Architect , Couchbase)

+0

Cảm ơn bạn đã cảnh báo về các quy tắc nhỏ của Apple. – chicks

+0

Heh. Tôi sẽ không nói chúng "nhỏ" - các quy tắc có ý nghĩa từ quan điểm bảo mật vì chúng loại bỏ nhiều lỗ hổng thực thi mã từ xa từ các trình thông dịch lỗi (như Flash.) "Có lẽ quá nghiêm ngặt". –

+0

Xin chào Jens, chúng tôi đang sử dụng couchbase lite 1.1 và cổng đồng bộ hóa 1.0.4-34. Trước tiên, chúng tôi sẽ thử cổng đồng bộ hóa mới. Sẽ cho bạn biết làm thế nào mà đi. Cảm ơn mẹo! – Bert

Các vấn đề liên quan