Obtener datos de la BD

Existen variar formas de obtener los datos almacenados, a continuación se explicarán cada uno de ellos:

다토 개인



Para obtener un solo dato (object) específico se usa el método get(key) , 알 쿠알 세 르 파사 코모 파라메트로 엘 key 델 오브제토 옵테너.
El dato solicitado es devuelto como resultado de la petición.

💡 Este método devuelve undefined como resultado si el dato almacenado tiene el valor de undefined o no existe.



function getStudent(key){
    const request = db.transaction('students')
                   .objectStore('students')
                   .get(key);

    request.onsuccess = ()=> {
        const student = request.result;

        return student;
    }

    request.onerror = (err)=> {
        console.error(`Error to get student information: ${err}`)
    }
}

getStudent('[email protected]');


배수 데이터



개체 저장소 건초 보관 가능성:

모든 것을 가져라()



Si se desea obtener un arreglo con todos los datos dentro de un Object Store, se usa el metodo getAll() , para este caso de uso este metodo tiene un mejor rendimiento que usar un cursor 기록 보관소에 있는 기록 보관소, ya que este ultimo tendrá que crear un objeto por cada dato almacenado conforme va iterando el Object Store, mientras que getAll() crea todos los objetos a la misma vez y devuelve el arreglo.

function getAllStudents(){
    const request = db.transaction('students')
                   .objectStore('students')
                   .getAll();

    request.onsuccess = ()=> {
        const students = request.result;

        console.log('Got all the students');
        console.table(students)

        return students;
    }

    request.onerror = (err)=> {
        console.error(`Error to get all students: ${err}`)
    }
}

getAllStudents();


커서



Si se desea trabajar con todos los datos almacenados en un Object Store de forma independiente, es buena Idea el uso de un cursor , el cual es un mecanismo para iterar sobre multiples registros en base a su key .

Para usar un cursor primero debe crearse con el metodo openCursor() del objeto objectStore, una vez hecho el request se maneja el evento success Donde el resultado del request es el cursor , dentro de este resultado podemos acceder al dato almacenado o solo a su key . Cuando no hay más datos o no se obtuvo un resultado en la búsqueda el cursor tiene el valor de undefined . Finalmente, para pasar al siguiente dato almacenado se usa el metodo continue()cursor .

Personalmente le encuentro dos casos de uso para el cursor :
  • 객체 저장소에 대한 데이터 보관 및 보관은 객체 저장소를 준수합니다.
  • Cuando se trabaje con los keys de cada objeto almacenado, ya que es usar un cursor es más eficiente que el metodo getAll() 특별한 경우에 해당합니다.

  • Para el ejemplo, supongamos que tenemos un metodo que imprime las propiedades de cada objeto almacenado llamado printInfo(obj) :

    function printStudents(){
        const request = db.transaction('students')
                       .objectStore('students')
                       .openCursor();
    
        request.onsuccess = ()=> {
            const cursor = request.result;
    
            if(cursor){
                printInfo(cursor.value);
                cursor.continue();
            }else{
                console.log('No more entries')
            }
    
        }
    }
    
    printStudents();
    

    좋은 웹페이지 즐겨찾기