Cara menggunakan mongodb timestamp

Indonesian (Bahasa Indonesia) translation by Dian Sapta Priambogo (you can also view the original English article)

Dengan MongoDB Atlas, yang diperlukan hanyalah beberapa klik di browser untuk membuat cluster MongoDB Anda sendiri dan berjalan di cloud. Dengan menggunakannya, Anda dapat membangun aplikasi Android dan iOS yang dapat melayani jutaan pengguna secara efisien. Namun, Anda masih memerlukan server back-end yang dapat bertindak sebagai perantara antara perangkat pengguna dan kluster Anda. Anda akan membutuhkannya untuk menegakkan kebijakan keamanan, menambah tingkat abstraksi pada operasi CRUD Anda, menjadwalkan pekerjaan, dan untuk banyak tugas penting lainnya.

MongoDB Stitch adalah platform tanpa server yang kuat yang dapat memenuhi semua persyaratan back-end Anda. Selain memberikan kontrol akses yang baik ke data dalam cluster MongoDB Atlas Anda, ia menawarkan lingkungan komputasi berbasis JavaScript yang dapat Anda gunakan untuk melakukan berbagai operasi sisi server. Dalam tutorial ini, saya akan menunjukkan kepada Anda bagaimana menggunakan platform di aplikasi Android.

Prasyarat

Untuk mengikuti, Anda perlu:

  • akun MongoDB Atlas
  • versi terbaru Android Studio
  • perangkat atau emulator yang menjalankan Android 5.0 atau lebih tinggi

1. Membuat Cluster MongoDB Atlas

MongoDB Stitch dimaksudkan untuk digunakan dengan cluster MongoDB Atlas. Anda bebas menggunakan cluster yang sudah Anda miliki, tetapi saya sarankan Anda membuat yang baru untuk tutorial ini.

Mulailah dengan masuk ke akun MongoDB Atlas Anda dan menekan tombol Build a New Cluster.

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

Di layar berikutnya, yang meminta Anda untuk detail konfigurasi tentang cluster baru Anda, pilih penyedia cloud apa pun, wilayah yang menawarkan cluster tingkat M0 gratis, dan tekan tombol Create Cluster.

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

Setelah beberapa menit, Anda akan memiliki tier cluster gratis baru bernama Cluster0.

2. Membuat Aplikasi MongoDB Stitch

Untuk mengaitkan aplikasi Stitch dengan kluster Anda, klik tautan Link Application. Di halaman yang terbuka berikutnya, tekan tombol Create New Application.

Anda sekarang dapat mengetikkan nama yang Anda inginkan untuk aplikasi Stitch baru Anda. Setelah Anda melakukannya, pastikan bahwa cluster yang tepat dipilih dan tekan tombol Create.

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

Pada tahap ini, aplikasi Stitch Anda — dengan kuota gratis yang sangat murah hati — sudah siap.

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

Aplikasi ini memiliki ID unik yang Anda perlukan saat mengembangkan aplikasi Android Anda. Anda dapat melihat apa itu dengan membuka bagian Clients dan membuka tab Java (Android).

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

3. Mengonfigurasi User dan Rule

Dengan menggunakan MongoDB Stitch, Anda dapat dengan aman menulis kode front-end web dan mobile untuk berinteraksi dengan cluster MongoDB Atlas Anda. Ini dimungkinkan karena Anda tidak perlu memasukkan string koneksi yang berisi alamat server, nama pengguna, dan kata sandi database Anda dalam kode Anda.

Pengguna akhir yang diautentikasi dari aplikasi Stitch Anda secara otomatis mendapatkan akses ke database Anda. Namun, dengan menggunakan satu rule atau lebih, Anda dapat mengontrol dengan tepat dokumen dan bidang mana yang dapat mereka lihat atau modifikasi.

Untuk mengautentikasi user Anda, Stitch menawarkan beberapa mekanisme otentikasi, termasuk otentikasi anonim, otentikasi email/kata sandi, dan otentikasi menggunakan penyedia identitas gabungan yang populer. Dalam tutorial ini, kita akan menggunakan otentikasi anonim. Untuk mengaturnya, buka bagian Users dan buka tab Providers.

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

Selanjutnya, pilih opsi Allow users to log in anonymously, aktifkan, dan tekan tombol Save.

Katakanlah kita ingin mengizinkan pengguna anonim kita untuk bekerja hanya dengan dokumen yang mereka miliki. Untuk membuat aturan seperti itu, buka bagian Rules.

Karena aturan diterapkan ke koleksi, tekan tombol Add Collection untuk membuat koleksi baru sekarang. Dalam formulir yang muncul, beri nama dan tentukan basis data mana yang harus dimiliki. Setelah Anda melakukannya, pilih rule tempalte Users can only read and write their own data.

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

Saat memilih template, Anda akan diminta untuk menentukan nama bidang dalam dokumen Anda di mana Anda akan menyimpan ID auth Stitch yang dihasilkan pengguna secara otomatis. Stitch akan menggunakan bidang ini sambil memutuskan apakah suatu dokumen milik pengguna atau bukan. Katakanlah namanya adalah user_id dan kirimkan formulir.

Di halaman yang terbuka berikutnya, Anda sekarang dapat mengonfirmasi bahwa hanya pemilik dokumen dalam koleksi Anda yang dapat melakukan operasi baca dan tulis.

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

4. Menyiapkan Proyek Android

Agar dapat menggunakan Stitch dalam proyek Android Studio Anda, Anda harus menambahkan SDK resminya sebagai sebuah dependensi implementation dalam modul app file build.gradle.

implementation 'org.mongodb:stitch-android-sdk:4.0.5'

Selain itu, Anda harus menyebutkan ID unik aplikasi Stitch Anda di proyek Anda. Jadi buka file res/values/strings.xml dan tambahkan sebagai tag .

mystitchapp-qwern

5. Membangun Koneksi

Dengan turunan dari kelas StitchAppClient, Anda dapat dengan mudah menggunakan semua fitur yang ditawarkan platform Stitch. Untuk menginisialisasi initialize StitchAppClient, Anda harus memanggil metode initializeDefaultAppClient() dan meneruskan ID aplikasi Stitch Anda ke sana. Ini perlu dilakukan hanya sekali di aplikasi Anda, sebaiknya segera setelah dimulai.

Setelah siap, Anda dapat memanggil metode getDefaultAppClient() untuk mendapatkan referensi ke klien. Kode berikut, yang bisa Anda tambahkan ke metode onCreate() activity Anda, menunjukkan kepada Anda berikut:

Stitch.initializeDefaultAppClient(
    resources.getString(R.string.my_app_id)
)

val stitchAppClient = Stitch.getDefaultAppClient()

Kecuali jika pengguna Anda masuk ke aplikasi Stitch Anda, Anda tidak akan dapat melakukan operasi apa pun yang berguna pada cluster MongoDB Atlas Anda. Oleh karena itu, Anda sekarang harus membuat masuk pengguna dengan memanggil metode loginWithCredential(), yang berjalan secara tidak sinkron dan mengembalikan objek Task. Selain itu, karena Anda memilih otentikasi anonim sebagai mekanisme otentikasi di konsol web Stitch, pastikan Anda memberikan turunan dari kelas AnonymousCredential ke metodenya.

stitchAppClient.auth.loginWithCredential(AnonymousCredential())
        .addOnSuccessListener { 
            // More code here
        }

Pada titik ini, jika Anda menjalankan aplikasinya, Stitch akan secara otomatis mendaftarkan Anda sebagai pengguna baru, dan juga mencatat Anda ke dalam aplikasi. Terlebih lagi, jika Anda kembali ke konsol web Stitch dan membuka bagian Users, Anda akan dapat melihat bahwa entri baru telah ditambahkan ke daftar pengguna.

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

6. Memasukkan Dokumen

Setelah otentikasi berhasil, Anda bisa melanjutkan dan mendapatkan instance kelas RemoteMongoClient untuk mulai berinteraksi dengan cluster MongoDB Atlas Anda. Untuk melakukannya, Anda dapat memanggil metode getServiceClient() dan menentukan bahwa nama layanan yang Anda inginkan adalah "mongodb-atlas". Begini caranya:

val mongoClient = stitchAppClient.getServiceClient(
                    RemoteMongoClient.factory,
                    "mongodb-atlas"
                  )

Ingatlah bahwa, berkat aturan yang Anda buat sebelumnya dalam tutorial ini, pengguna Anda hanya dapat melakukan operasi baca dan tulis pada datanya sendiri. Selain itu, pengguna Anda terbatas hanya bekerja dengan database dan koleksi yang Anda sebutkan di konsol web Stitch.

Untuk mendapatkan referensi ke database, panggil metode getDatabase() dan berikan namanya. Demikian pula, untuk mendapatkan referensi ke koleksi, panggil metode getCollection(), yang mengembalikan objek RemoteMongoCollection.

val myCollection = mongoClient.getDatabase("test")
                              .getCollection("my_collection")

Apa yang Anda tambahkan ke koleksi, tentu saja, terserah Anda. Demi contoh, katakanlah kita ingin menambahkan dokumen yang berisi timestamp sepanjang waktu di mana pengguna membuka aplikasi.

Untuk membuat dokumen BSON baru, Anda harus menggunakan konstruktor kelas Document. Karena objek Document sangat mirip dengan peta, Anda dapat menggunakan operator [] untuk menambahkan pasangan nilai kunci ke dalamnya.

Kode berikut menunjukkan kepada Anda cara membuat dokumen baru dan menambahkan timestamp ke dalamnya:

val myFirstDocument = Document()
myFirstDocument["time"] = Date().time

Selain data Anda, semua dokumen Anda harus berisi ID autentikasi Stitch pengguna. Tanpanya, operasi sisipan Anda akan gagal. Untuk mendapatkan ID auth, Anda dapat langsung menggunakan properti id dari objek implisit it yang tersedia di dalam on-success listener.

myFirstDocument["user_id"] = it.id

Anda sekarang dapat memasukkan dokumen dengan memanggil metode insertOne(). (Anda dapat membaca tentang metode insertOne() dan operasi penulisan lainnya dalam dokumentasi MongoDB untuk driver Java.) Karena itu berjalan secara tidak sinkron, Anda akan membutuhkan on-success listener untuk memeriksa apakah operasi penyisipan berhasil.

myCollection.insertOne(myFirstDocument)
            .addOnSuccessListener {
                Log.d("STITCH", "One document inserted")
            }

Jika Anda menjalankan aplikasi sekarang dan memeriksa panel Logcat Android Studio, Anda seharusnya dapat melihat entri log yang terlihat seperti ini:

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

7. Menjalankan Kueri

Dengan memanggil metode find() objek RemoteMongoCollection Anda, Anda dapat membuat query. (Anda dapat mempelajari lebih lanjut tentang find() dan operasi kueri lainnya dalam dokumentasi driver Java MongoDB.) Metode mengembalikan objek RemoteFindIterable, di mana Anda dapat memanggil lebih banyak metode seperti sort() dan limit() untuk mengelola hasil dari kueri. Misalnya, kode berikut membuat kueri untuk menemukan lima dokumen terakhir yang dibuat oleh pengguna:

val query = myCollection.find()
                        .sort( Document("time", -1) )
                        .limit(5)

Untuk benar-benar menjalankan kuerinya, Anda dapat memanggil metode into(), yang mengharapkan daftar sebagai argumen. Seperti namanya, ini memuat hasil kueri, yang tidak lain adalah objek Document, ke dalam daftar yang Anda berikan. Ini berjalan secara tidak sinkron, sehingga Anda dapat mulai menggunakan daftar hanya di dalam on-success listener.

val result = mutableListOf()

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

Untuk saat ini, untuk mempermudah, mari gunakan widget TextView untuk menampilkan hasil kueri. Jadi tambahkan kode berikut ke file XML tata letak activity Anda:

Kembali ke dalam on-success listener, Anda sekarang dapat mengulang daftar dan membuat string gabungan yang berisi semua timestamp. Secara opsional, Anda bisa memberikan cap waktu ke metode getRelativeDateTimeString() dari kelas DateUtils untuk membuatnya lebih mudah dibaca. Setelah string siap, Anda dapat langsung menetapkannya ke widget TextView. Begini caranya:

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

Jika Anda menjalankan aplikasi lagi, sekarang Anda akan melihat sesuatu seperti ini di perangkat Anda:

Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp
Cara menggunakan mongodb timestamp

Kesimpulan

MongoDB Stitch adalah platform tanpa server yang dapat Anda gunakan untuk membuat aplikasi modern yang dapat dengan mudah mengatur skala untuk menangani sejumlah besar data pengguna. Dalam tutorial ini, Anda belajar cara menggunakannya untuk mengautentikasi pengguna aplikasi Android Anda secara anonim dan memungkinkan mereka untuk melakukan operasi baca dan tulis dengan aman di kluster MongoDB Atlas Anda.

Untuk mempelajari lebih lanjut tentang MongoDB Stitch, silakan merujuk ke documentasi resminya.