tech

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 child digunakan untuk mendapatkan referensi ke node tertentu dalam struktur data Firebase Realtime Database.
  • Dalam hal ini, dbRef adalah referensi ke root dari database, dan 'sms_driver' adalah nama node yang ingin diakses.
  • Jadi, child(dbRef, 'sms_driver') akan menghasilkan referensi ke node sms_driver di dalam database.
  • Fungsi Object.values() digunakan untuk mengambil semua nilai dari objek users.
  • Dalam konteks ini, users adalah 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 (seperti nik dan nama).
  • 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 mengembalikan true; jika tidak, akan mengembalikan false.
  • (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 oleh Object.values(users).
    • Di dalam fungsi ini, kita memeriksa apakah properti nik dari objek user sama dengan nilai nik yang dimasukkan oleh pengguna.
    • Jika ada pengguna yang memiliki nik yang sama, fungsi ini akan mengembalikan true.

Date: 24-03-2025