Synctos Functionality


#1

Can anyone tell me that how do we use channels in the sync function to give access?
I have certain channels in the document.
When I am trying to update something, error says;
{
“error”: “Forbidden”,
“reason”: “missing channel access”
}
Do anyone knows how to use synctos?
I have inserted the generated sync function into Sync_gateway.json.
But Can you please elaborate on this topic.


#2

when document changed, you can route document to some channel,and assign channel to user by the property of the changed document.
FYI
https://developer.couchbase.com/documentation/mobile/1.4/guides/sync-gateway/sync-function-api-guide/index.html#example


#3

Hi @atom_yang

I have generated the sync function using it but it’s not working.
Can you tell me how to create document type definition file for synctos.
What’s the format? May be I am wrong somewhere there.


#4

I didn’t use synctos ,I think README is clear
FYI


#5

Hi @atom_yang and @OldSneerJaw
I have already read and implemented as it says-

Have a look at my doc-definition file:
Document Name or type -DocumentType
DocumentID- _id
Channel-DocumentType
–>

{
channels: function(doc, oldDoc) {
var DocumentType = getDocumentType(doc, oldDoc);
return {
view: toSyncChannel(id, ‘DocumentType’),
write: ‘DocumentType’
};
},
authorizedRoles: defaultAuthorizedRoles,
authorizedUsers: defaultAuthorizedUsers,
typeFilter: function(doc, oldDoc) {
return /^DocumentType.[A-Za-z0-9
-]+$/.test(doc._id);
},
immutable: true,
propertyValidators: {
type: typeIdValidator,
_id: {
type: ‘string’,
required: true,
immutable: true
},
type: {
type: ‘string’,
required: true,
immutable: true
},
RegisteredDate :
{
type: ‘string’,
required: true,
immutable: true
},
IssueDate :
{
type: ‘string’,
required: true,
immutable: true
}
}
};

Sync function has been created using this js File and I inserted it in the sync_gateway.json but not getting implemented.
Whenever I update any document, it says:

{
“error”: “Internal Server Error”,
“reason”: “Exception in JS sync function”
}

Need Help in understanding.
Anyone can also help.


#6

Hi @jens
Can you go through this problem and let me know where am I getting wrong in generating sync function?


#7

using sync function might be easier. can you show your ACL requirements and routing requirements and document design?


#8

Sorry, I don’t know anything about synctos.


#9

Hi @atom_yang,
This is all what I have done-
Steps to create synctos sync function on ubuntu server:

apt-get install npm
mkdir /home/tanu
npm install synctos
doc-definition.js (File has to be created in the project directory)
apt-get install node
apt-get install nodejs-legacy
cd /home/tanu/node_modules/synctos
./make-sync-function /home/tanu/node_modules/synctos/doc-definition.js /home/tanu/node_modules/synctos/generated-sync-function.js

(Append the contents of generated file in the sync_gateway.json)

And you can see the doc-definition file above as shown.

And my document design is like this-
{
“RegisteredDate “: “2017-09-22T15:03:04Z”,
“IssueDate “: “2017-09-25”,
”_id”: “DocumentType::0002218D-C485-4C7B-8A6C-F7D10F880568”,
”_rev”: “42-f797cc6661c7b3f818f1171db0d46e11”,
“channels”: [
“DocumentType”,
],
“type”: “DocumentType”
}

I have validated each field in sync function but still not getting implemented.