Setup channel based document sync

Hello,

I have tested the documents sync from my iOS swift application. I want to test through channel based documents sync. I think, I need to change ‘admin_channel’ to ‘specific channel’ in ‘couchbase-sync-gateway json’ configuration and then set that channel in iOS application and do authentication as well? Please advise, What are the steps involved? Is there any sample and clear documentation available ? Appreciate your guidance.

@jongladwin

How you route documents with channels can be done in a few ways. Ultimately, it depends on what you’re trying to accomplish within your app.

Based on what it sounds like you’re trying to do here are a couple of options to look into:

Please reach out if you have any questions, and certainly don’t hesitate to provide more details on the particular workflow you’re trying to create.

Thank you. I think, the second one you gave is what i want. I read about https://docs.couchbase.com/sync-gateway/current/data-routing.html#creating-channels
Still, it is confusing, lot of stuff in the document. I don’t want to create sync function. Can you please give some example below to do that step by step? Instead of star channel, i just need to use some channel? I am only a iOS developer, not Couchbase adminstrator. What are the changes happening on sync-gateway and iOS client application perspective? It would be great if you could give some examples please.

Can I modify sync-gateway json like this todo sample? It creates channels like, user1 and user2 ?

{
“interface”:":4984",
“log”: ["*"],
“databases”: {
“todo”: {
“server”: “walrus:”,
“users”: {
“user1”: {“password”: “pass”, “admin_channels”: [“user1”]},
“user2”: {“password”: “pass”, “admin_channels”: [“user2”]},
“mod”: {“password”: “pass”, “admin_roles”: [“moderator”]},
“admin”: {“password”: “pass”, “admin_roles”: [“admin”]}
},
“roles”: {
“moderator”: {},
“admin”: {}
},
“unsupported”: {
“replicator_2”:true
},
“sync”: `

Sure, that’ll work. Then set the channel property in a document to "user1" or "user2" so that the default sync function will add it to that channel and make it visible to that user.

I have a doubt. “user1”: and “admin_channels” value should be same? for ex: I have “user1” for both
“user1”: {“password”: “pass”, “admin_channels”: [“user1”]},

Also, can i see some iOS swift sample to set document to specific channel?

If you want to give every user their own channel, that’s a good way to do it. It will make documents visible to only one user (if you’re using the default sync function.)

Also, can i see some iOS swift sample to set document to specific channel?

The Sync Gateway sync function is in charge of assigning channels, and it can use any logic it wants to for that, so there’s no general answer to your question.

The default sync function looks at the channels property and if its value is a string assigns the doc to that channel; or if the value is an array, it assigns it to each channel listed in the array.

If your server uses that sync function, then in an app just set a property named channels whose value is the channel (or array of channels) you want to assign the document to.