MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como usar o MongoDB Stitch em aplicativos Android


Com o MongoDB Atlas, bastam alguns cliques no navegador para colocar seu próprio cluster MongoDB em funcionamento na nuvem. Ao usá-lo, você pode criar aplicativos para Android e iOS que podem atender milhões de usuários com eficiência. No entanto, você ainda precisaria de um servidor back-end que pudesse atuar como intermediário entre os dispositivos de seus usuários e seu cluster. Você precisaria dele para impor políticas de segurança, adicionar um nível de abstração às suas operações CRUD, agendar trabalhos e muitas outras tarefas importantes.
  • MongoDBCcriar um cluster de banco de dados na nuvem com o MongoDB AtlasAshraff Hathibelagal

O MongoDB Stitch é uma poderosa plataforma sem servidor que pode atender a todos os seus requisitos de back-end. Além de fornecer controle de acesso refinado aos dados em seu cluster MongoDB Atlas, ele oferece um ambiente de computação baseado em JavaScript que você pode usar para executar uma ampla variedade de operações do lado do servidor. Neste tutorial, mostrarei como usar a plataforma em um aplicativo Android.

Pré-requisitos


Para acompanhar, você precisará de:
  • uma conta do MongoDB Atlas
  • a versão mais recente do Android Studio
  • um dispositivo ou emulador com Android 5.0 ou superior

1. Criar um cluster do MongoDB Atlas


O MongoDB Stitch deve ser usado com um cluster MongoDB Atlas. Você pode usar um cluster que já possui, mas sugiro que crie um novo para este tutorial.

Comece fazendo login na sua conta do MongoDB Atlas e pressionando o botão Build a New Cluster botão.

Na próxima tela, que solicita detalhes de configuração sobre seu novo cluster, escolha qualquer provedor de nuvem, uma região que ofereça um cluster de nível gratuito M0 e pressione o botão Criar cluster botão.

Após alguns minutos, você terá um novo cluster de nível gratuito chamado Cluster0 .

2. Criar um aplicativo de ponto MongoDB


Para associar um aplicativo Stitch ao seu cluster, clique no botão Link Application link. Na página que se abre a seguir, pressione o botão Criar novo aplicativo botão.

Agora você pode digitar o nome que deseja para seu novo aplicativo Stitch. Depois de fazer isso, certifique-se de que o cluster correto esteja selecionado e pressione o botão Criar botão.

Neste ponto, seu aplicativo Stitch - com cotas gratuitas muito generosas - está pronto.

O aplicativo tem um ID exclusivo que você precisará ao desenvolver seu aplicativo Android. Você pode ver o que é acessando os Clientes seção e abrir o Java (Android) aba.

3. Configurar usuários e regras


Ao usar o MongoDB Stitch, você pode escrever código front-end da Web e móvel com segurança para interagir com o cluster do MongoDB Atlas. Isso é possível porque você não precisará incluir uma string de conexão contendo o endereço do servidor do banco de dados, nome de usuário e senha em seu código.

Os usuários finais autenticados do seu aplicativo Stitch obtêm acesso automaticamente ao seu banco de dados. Usando uma ou mais regras, no entanto, você pode controlar com precisão quais documentos e campos eles podem ver ou modificar.

Para autenticar seus usuários, o Stitch oferece vários mecanismos de autenticação, incluindo autenticação anônima, autenticação de e-mail/senha e autenticação usando provedores de identidade federados populares. Neste tutorial, usaremos a autenticação anônima. Para configurá-lo, vá para Usuários seção e abra os Provedores aba.

Em seguida, selecione Permitir que os usuários façam login anonimamente opção, habilite-a e pressione o botão Salvar botão.

Digamos que queremos permitir que nossos usuários anônimos trabalhem apenas com os documentos que possuem. Para criar essa regra, acesse as Regras seção.

Como as regras são aplicadas a coleções, pressione o botão Adicionar coleção botão para criar uma nova coleção agora. No formulário que aparece, dê um nome a ele e especifique a qual banco de dados ele deve pertencer. Depois de fazer isso, selecione Os usuários só podem ler e gravar seus próprios dados modelo de regras.

Ao selecionar o modelo, você será solicitado a especificar o nome do campo em seu documento no qual você armazenará o ID de autenticação do Stitch gerado automaticamente pelo usuário. O Stitch usará este campo para decidir se um documento pertence a um usuário ou não. Digamos que o nome seja user_id e envie o formulário.

Na página que se abre a seguir, agora você pode confirmar que apenas os proprietários dos documentos em sua coleção podem realizar operações de leitura e gravação neles.

4. Preparar o projeto Android


Para poder usar o Stitch em seu projeto do Android Studio, você deve adicionar o SDK oficial como uma implementation dependência em seu app build.gradle do módulo Arquivo.
implementation 'org.mongodb:stitch-android-sdk:4.0.5'

Além disso, você deve mencionar o ID exclusivo do seu aplicativo Stitch em seu projeto. Então vá para res/values/strings.xml arquivo e adicione-o como um <string> marcação.
<string name="my_app_id">mystitchapp-qwern</string>

5. Estabeleça uma conexão


Com uma instância do StitchAppClient classe, você pode facilmente fazer uso de todos os recursos que a plataforma Stitch oferece. Para inicializar inicialize StitchAppClient , você deve chamar o método initializeDefaultAppClient() e passe o ID do seu aplicativo Stitch para ele. Isso precisa ser feito apenas uma vez em seu aplicativo, de preferência assim que ele for iniciado.

Quando estiver pronto, você pode chamar o getDefaultAppClient() método para obter uma referência para o cliente. O código a seguir, que você pode adicionar ao onCreate() da sua atividade método, mostra como:
Stitch.initializeDefaultAppClient(
    resources.getString(R.string.my_app_id)
)

val stitchAppClient = Stitch.getDefaultAppClient()

A menos que seu usuário esteja conectado ao seu aplicativo Stitch, você não poderá realizar nenhuma operação útil em seu cluster MongoDB Atlas. Portanto, agora você deve fazer o login do usuário chamando o método loginWithCredential() método, que é executado de forma assíncrona e retorna uma Task objeto. Além disso, como você escolheu a autenticação anônima como o mecanismo de autenticação no console da Web do Stitch, certifique-se de passar uma instância da AnonymousCredential classe para o método.
stitchAppClient.auth.loginWithCredential(AnonymousCredential())
        .addOnSuccessListener { 
            // More code here
        }

Nesse ponto, se você executar o aplicativo, o Stitch o registrará automaticamente como um novo usuário e também fará o login no aplicativo. Além disso, se você voltar ao console da Web do Stitch e abrir a seção Usuários seção, você poderá ver que uma nova entrada foi adicionada à lista de usuários.

6. Inserir documentos


Após uma autenticação bem-sucedida, você pode obter uma instância do RemoteMongoClient class para começar a interagir com seu cluster MongoDB Atlas. Para fazer isso, você pode chamar o método getServiceClient() e especifique que o nome do serviço desejado é "mongodb-atlas ". Veja como:
val mongoClient = stitchAppClient.getServiceClient(
                    RemoteMongoClient.factory,
                    "mongodb-atlas"
                  )

Lembre-se de que, graças à regra que você criou anteriormente neste tutorial, seu usuário só pode realizar operações de leitura e gravação em seus próprios dados. Além disso, seu usuário está limitado a trabalhar apenas com o banco de dados e a coleção que você mencionou no console web do Stitch.

Para obter uma referência ao banco de dados, chame o método getDatabase() método e passe seu nome para ele. Da mesma forma, para obter uma referência à coleção, chame o método getCollection() método, que retorna um RemoteMongoCollection objeto.
val myCollection = mongoClient.getDatabase("test")
                              .getCollection("my_collection")

O que você adiciona à coleção, é claro, depende de você. A título de exemplo, digamos que queremos adicionar documentos contendo registros de data e hora de todas as vezes em que o usuário abriu o aplicativo.

Para criar um novo documento BSON, você deve usar o construtor do Document aula. Porque Document objetos são muito semelhantes aos mapas, você pode usar o [] operador para adicionar pares de valores-chave a eles.

O código a seguir mostra como criar um novo documento e adicionar um carimbo de data/hora a ele:
val myFirstDocument = Document()
myFirstDocument["time"] = Date().time

Além dos seus dados, todos os seus documentos devem conter o Stitch auth ID do usuário. Sem ele, suas operações de inserção falharão. Para obter o ID de autenticação, você pode usar diretamente o id propriedade do it implícito objeto disponível dentro do ouvinte de sucesso.
myFirstDocument["user_id"] = it.id

Agora você pode inserir o documento chamando o método insertOne() método. (Você pode ler sobre o insertOne() e outras operações de gravação na documentação do MongoDB para o driver Java.) Como ele é executado de forma assíncrona, você precisará de outro ouvinte em caso de sucesso para verificar se a operação de inserção foi bem-sucedida.
myCollection.insertOne(myFirstDocument)
            .addOnSuccessListener {
                Log.d("STITCH", "One document inserted")
            }

Se você executar o aplicativo agora e verificar o Logcat do Android Studio painel, você poderá ver uma entrada de log semelhante a esta:

7. Executar consultas


Chamando o find() método do seu RemoteMongoCollection objeto, você pode criar uma consulta. (Você pode aprender mais sobre find() e outras operações de consulta na documentação do driver MongoDB Java.) O método retorna um RemoteFindIterable objeto, no qual você pode chamar mais métodos como sort() e limit() para gerenciar os resultados da consulta. Por exemplo, o código a seguir cria uma consulta para localizar os últimos cinco documentos criados pelo usuário:
val query = myCollection.find()
                        .sort( Document("time", -1) )
                        .limit(5)

Para realmente executar a consulta, você pode chamar seu into() método, que espera uma lista como argumento. Como o próprio nome sugere, ele carrega os resultados da consulta, que nada mais são do que Document objetos, na lista que você passa para ele. Ele é executado de forma assíncrona, para que você possa começar a usar a lista apenas dentro de um ouvinte de sucesso.
val result = mutableListOf<Document>()

query.into(result).addOnSuccessListener {
    // More code here    
}

Por enquanto, para simplificar, vamos usar um TextView widget para exibir os resultados da consulta. Portanto, adicione o seguinte código ao arquivo XML de layout da sua atividade:
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/viewer"
    />

De volta ao listener on-success, agora você pode percorrer a lista e criar uma string concatenada contendo todos os timestamps. Opcionalmente, você pode passar os carimbos de data/hora para o getRelativeDateTimeString() método do DateUtils classe para torná-los mais legíveis. Quando a string estiver pronta, você poderá atribuí-la diretamente ao TextView ferramenta. Veja como:
val output = StringBuilder("You opened this app: \n\n")

// Loop through the results
result.forEach {
    output.append(
        DateUtils.getRelativeDateTimeString(
            this@MainActivity,            
            it["time"] as Long, // Get value of 'time' field
            DateUtils.SECOND_IN_MILLIS,     
            DateUtils.WEEK_IN_MILLIS,
            0
        )
    ).append("\n")
}

// Update the TextView
viewer.text = output

Se você executar o aplicativo novamente, deverá ver algo assim no seu dispositivo: