I have been researching CouchDB and TouchDB for sometime now and seriously contemplating their suitability for a mobile app I have in mind. I have a few questions and I would really appreciate if anyone can point me in the right direction. The scenario is I have 2 mobile clients running on TouchDB. I want Mobile Client A to be able to replicate a specific document on to Mobile Client B. Then I want Mobile Client B to be able to make changes and sync those changes back to with Mobile Client A. From an architectural standpoint I figure that I would need a centralized couchdb database that both clients can pull/push. The problem that I am having is how do I ensure that Client B is only able to replicate documents that he is authorized replicate. I understand that I can use a replication filter to limit the documents that are replicated but how do I enforce it on Mobile Client B? Also what would be the ideal architecture for the above scenario? Any assistance will be greatly appreciated. Thanks!
Related Questions in ANDROID
- Creating global Class holder
- Flutter + Dart: Editing name of a tab shows up a black screen
- android-pdf-viewer Received status code 401 from server: Unauthorized
- Sdk 34 WRITE_EXTERNAL_STORAGE not working
- ussd reader in Recket Native module
- Incorrect display of LinearGradientBrush in IOS
- The Binary Version Of its metadata is 1.8.0, expected Version is 1.6.0 build error
- I can't make TextInput to auto expand properly in Android
- Creating multiple instances of a class with different initializing values in Flutter
- How to create a lottie animation
- making android analyze with coverity sast tool
- Flutter plugin development android src not opening after opening example
- I initialize my ViewModel in the Activity with several fragments as tabs, but the fragments(tabs) return null for the updated livedata
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How I can use the shared preferences class?
Related Questions in MOBILE
- Doesn't work TrafficStats.clearThreadStatsTag() in Kotlin
- KeyboardAvoidingView makes a messy the flexbox
- How can I find a lost Samsung Device?
- How can I eliminate or deactivate the white flash that appears when I press a button via a mobile device?
- In MAUI how can I Show different appshell tabbars depending on the user role?
- Why doesn't TrafficStats.clearThreadStatsTag() work in Kotlin?
- How can I create an animation like WhatsApp archive button spawn animation with SwiftUI on watchOS?
- Not showing the widget wrapped with Obx in Android 14
- Is there a way to use Family Link group in my own application?
- Is it viable proxying all my mobile apps requests, to some kind knowing that a request is coming from a secure source
- How can I connect android app to arduino via Bluetooth?
- How to animate calculated position/container height when viewport changes?
- Unnecessary override. Try adding behavior in the overriding member or removing the override
- Selecting an option in the mobile app drop down which is not visible when the app is loaded for the first time
- Getting Real-Time Sensor Data from Smart Watches
Related Questions in COUCHDB
- Keep a webview app of Android running in the background
- fetch data from couchdb to node.js file
- CouchDB _approx_count_distinct
- Couchdb python - Upload Attachment with put_attachment
- Couchdb illegal_database_name error when creating database
- CouchDB `_find` api `$elemMatch` fails to find matching record
- How to build Erlang v24 for couchdb?
- Docker Desktop couchDB - Apple Mac M1
- can I ask couchdb `_change` API to return all document change history?
- How to implement lazy pagination in CouchDB?
- is it even possible to use multiple indices to query a design document view in CouchDB?
- CouchDB view javascript only supports a subset of JS features?
- How to query a sub-element of the design document in CouchDB?
- Does CouchDB /_changes?since=X request give older feed before X?
- Count query in CouchDB
Related Questions in REPLICATION
- Which column to use for ordering change data read from change tables in SQL Server?
- Postgresql Database Replicate Using Docker-Compose File
- PG_chameleon during start replica turns columns into UNKNOWN_COL{number}
- Consistency of replicated map across cluster nodes
- DB Replicating from different publisher to a sing subscriber
- How to route different db requests to read only instance
- Replication postgresql database error connection between master to standby
- mongodb statefulset pods restarting without any useful error during replication
- Snapshots in Logical Decoding
- SQL Server replication: Need to remove articles from the publication
- TSQL query for transactional replication log reader agent account in SQL Server
- Does PostgresSQL 16 support Active Active replication ? I am using the free version
- Invoke-Command to a DC for replication not working in Windows 11
- Postgres connection failed while Debezium connector streaming changes
- How to Achieve Master-Master Replication in MongoDB for Two Databases in Different Locations?
Related Questions in TOUCHDB
- The pricing programs of hosted CouchDB providers do not make sense
- Couchdb - is it possible to "disreplicate" a replicated document
- Duplicate symbol error when using TouchDB and FMDB wrapper together
- CBLite Android - Get values in second level
- Migrate between two CouchDB designs
- TouchDB saves the attachment but does not save the property
- Difference between CBLQuery's(a.k.a CouchQuery's) documentID and sourceDocumentID
- How do I include class TDCollateJSon in my my code?
- _replicate db does not exists in couchDb on Android
- LiteServAndroid could not able to configuring project
- View TouchDB mobile database in desktop
- Replication from CouchDB to TouchDB
- TouchDB - CouchbaseLite Libraries?
- Gradle: Project "x" not found in root project "myProject"
- Cost of continuous replications vs one-shot replications (using TouchDB and Cloudant)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I have a similar setup with TouchDB and BigCouch in EC2 (the centralized database). It can be quite an adventure to get the pushing and pulling working right. =)
I think you are on the right track with using a replication filter with the pulls. If you limit the pulls for Client B with a replication filter, your life will most likely be easier because Client B can modify anything on his local TouchDB and it won't hurt anything.
In other words, don't replicate down documents you don't want Client B to modify.
To do that you would have to introduce a field into the document that specifies an access level - or some array maybe that has Client B's user id in it. That way he only sees what he is authorized to see.
Two notes before I forget: a) TouchDB on Android is sketchy right now. They are working to make it better, but it's behind the iOS version. b) I strongly recommend looking into writing your replication filter in Erlang. I got a 50% speed increase from doing that.