O Função de sincronização é um dos componentes fundamentais do Sync Gateway: sua principal responsabilidade é definir qual usuário tem acesso a quais documentos. Neste screencast, você aprenderá a usar o canal público (também conhecido como canal !) para sincronizar documentos com usuários que ainda não fizeram login no seu aplicativo. Esse recurso é particularmente útil ao projetar a jornada de integração com dados dinâmicos que podem ser alterados no back-end e extraídos automaticamente quando o usuário inicia o aplicativo pela primeira vez. Consideraremos um aplicativo de anotações e exploraremos o seguinte:
- Use o canal público para inserir o Primeiros passos você pode pensar nela como a nota de tutorial quando o usuário inicia o aplicativo pela primeira vez
- Mapear a nota criada por um usuário registrado para um canal que só pode ser acessado por esse usuário
- Imponha permissões de gravação com o requireUser método
- Teste a função Sync com comandos curl
Encontre o código para esta lição
Você pode encontrar o arquivo de configuração do Sync Gateway abaixo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
{ "log": ["CRUD"], "databases": { "notes": { "server": "walrus:", "users": { "GUEST": {"disabled": false}, "william": {"password": "pass"}, "admin": {"password": "pass"} }, "sync": ` function sync(doc, oldDoc) { switch(doc.security) { case "public": requireUser("admin"); channel("!"); break; default: requireUser(doc.user_name); channel(doc._id); access(doc.user_name, doc._id); } } ` } } } |
E os comandos curl para testar a função Sync:
- Persistir uma nota pública por meio da API de administração
123curl -X POST https://localhost:4985/notes/-H "Content-Type: application/json"-d '{"security": "public", "title": "Getting Started"}' - Autenticação do usuário
123curl -vX POST https://localhost:4984/notes/_session-H "Content-Type: application/json"-d '{"name": "william", "password": "pass"}' - Persistir uma nota de usuário
1234curl -X POST https://localhost:4984/notes/-H "Content-Type: application/json"-H "Cookie: SyncGatewaySession=PASTE_COOKIE_VALUE"-d '{"user_name": "william", "title": "Overview of the user journey"}'