Table of Content
Implementasi
import { Router } from '@angular/router';
import { Component } from '@angular/core';
import { Database, ref, get, child } from '@angular/fire/database';
import Swal from 'sweetalert2';
@Component({
selector: 'app-login-nik',
templateUrl: './login-nik.component.html',
styleUrls: ['./login-nik.component.css']
})
export class LoginNikComponent {
nik: string = '';
constructor(private router: Router, private database: Database) {}
async login(nik: string) {
const dbRef = ref(this.database);
try {
const snapshot = await get(child(dbRef, 'sms_driver'));
if (snapshot.exists()) {
const users = snapshot.val();
const userExists = Object.values(users).some((user: any) => user.nik === nik);
if (userExists) {
this.router.navigate(['/home']);
} else {
Swal.fire("Gagal", "NIK tidak terdaftar di sistem!", "error");
}
} else {
Swal.fire("Gagal", "NIK tidak terdaftar di sistem!", "error");
}
} catch (error) {
Swal.fire("Error", "Terjadi kesalahan saat memeriksa NIK!", "error");
}
}
}Penjelasan:
- Fungsi
childdigunakan untuk mendapatkan referensi ke node tertentu dalam struktur data Firebase Realtime Database. - Dalam hal ini,
dbRefadalah referensi ke root dari database, dan'sms_driver'adalah nama node yang ingin diakses. - Jadi,
child(dbRef, 'sms_driver')akan menghasilkan referensi ke nodesms_driverdi dalam database. - Fungsi
Object.values()digunakan untuk mengambil semua nilai dari objekusers. - Dalam konteks ini,
usersadalah objek yang berisi data pengguna yang diambil dari Firebase Realtime Database. Setiap kunci dalam objek ini mewakili ID unik untuk pengguna, dan nilainya adalah objek yang berisi informasi pengguna (sepertinikdannama). Object.values(users)akan mengembalikan array yang berisi semua objek pengguna..some(...):- Metode
.some()adalah metode array yang menguji apakah setidaknya satu elemen dalam array memenuhi kondisi yang diberikan oleh fungsi callback. - Jika ada setidaknya satu elemen yang memenuhi kondisi,
.some()akan mengembalikantrue; jika tidak, akan mengembalikanfalse.
- Metode
(user: any) => user.nik === nik:- Ini adalah fungsi callback yang digunakan oleh metode
.some(). - Fungsi ini menerima satu parameter, yaitu
user, yang merupakan setiap objek pengguna dalam array yang dihasilkan olehObject.values(users). - Di dalam fungsi ini, kita memeriksa apakah properti
nikdari objekusersama dengan nilainikyang dimasukkan oleh pengguna. - Jika ada pengguna yang memiliki
nikyang sama, fungsi ini akan mengembalikantrue.
- Ini adalah fungsi callback yang digunakan oleh metode
Date: 24-03-2025