Chamar uma Atlas Function - Kotlin SDK
Nesta página
Visão geral
Você pode chamar uma Função de Realm a partir de uma aplicação cliente usando o Realm Kotlin SDK. Functions são funções JavaScript sem servidor que permitem definir e executar a lógica do lado do servidor. Essas funções do lado do servidor podem ser executadas no contexto do usuário autenticado e, portanto, honrar as regras, papéis e permissões que você atribuiu aos seus dados no Atlas.
Novidades na versão 1.9.0.
Você pode serializar argumentos de função e retornar valores usando um codificador EJSON. Para mais informações, incluindo exemplos, consulte Codificação EJSON para Atlas.
Para mais informações sobre configurar e escrever Atlas Functions, consulte Atlas Functions na documentação do App Services.
Antes de começar
Em um App Services App, defina uma Atlas Function.
Em seu projeto do cliente, inicialize o cliente da aplicação.
Em seguida, autentique um usuário. As funções são acessadas por meio do objeto Usuário .
Chamar uma função
Importante
Certifique-se de limpar os dados do cliente para se proteger contra a injeção de código ao usar funções.
Para chamar uma Atlas Function a partir do Kotlin SDK, passe seu nome e todos os argumentos para Functions.call().
Considere uma função Atlas em execução em um aplicativo do App Services chamado sum
que recebe dois argumentos, os adiciona e retorna o resultado:
// Add two numbers exports = function(a, b) { return a + b; };
Para chamar esta Função de Realm a partir do Kotlin SDK:
runBlocking { val app: App = App.create(appID) val user = app.login(credentials) // Access the Atlas Function through the authenticated user // Pass the Function name and all arguments val response = user.functions.call<Int>("sum", 1, 2) print(response) // prints: 3 }
Limitações no Realm Kotlin SDK v1.8.x e anteriores
Alterado na versão 1.9.0.
Se você estiver usando o Kotlin SDK v1.9.0 ou posterior, essas limitações não se aplicarão mais.
Porque o mecanismo de serialização Kotlin ainda não oferece suporte a bibliotecas de terceiros, há limitações para os tipos que você pode passar como argumentos e os tipos para os quais você pode desserializar os resultados em uma função chamada.
Você não pode passar objetos como argumentos.
Os seguintes são tipos de valor de argumento válidos:
Primitivos
Bson
MutableRealmInt
RealmUUID
ObjectId
Instante real
RealmAny
Array
collection (List ou Set)
Map
Os seguintes são tipos de valor de retorno válidos:
Primitivos
Bson
MutableRealmInt
RealmUUID
ObjectId
Instante real
RealmAny
BsonArray (para tipos de argumento Array e collection)
BsonDocument (para tipos de argumentos de Mapa)