Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

289
Vistas
IndexedDB: SchemaError al intentar acceder a un objeto anidado dentro de una tabla

Tengo un IndexedDB llamado pos y dentro de esa tabla llamado pos_customers. La estructura se parece a https://imgur.com/e9ZrxVm

Ahora mi objetivo es acceder al teléfono que está dentro del objeto de facturación. Si observa detenidamente, el objeto de facturación está anidado. Entonces, para acceder a eso, escribí este código:

 if (search) { database.table('pos_customers').where("first_name") .startsWithIgnoreCase(search) .or('email').startsWithIgnoreCase(search) .or('billing.phone').startsWithIgnoreCase(search) //throws SchemaError .toArray().then( (data) => { data.forEach(info => { for(let key in info) { console.log(`${key} ${info.email} ${info.billing.phone}`); //this will work obviously } } )} );

La advertencia que me mostró:

 Unhandled rejection: SchemaError: KeyPath billing.phone on object store pos_customers is not indexed.

Sí, soy nuevo en Dexie y leí muchas respuestas de StackOverflow, pero no pude obtener nada específico buscando objetos anidados de Dexie.

Gracias de antemano

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Encontré una manera de hacer esto:

Primero, asegúrese de que el campo al que intenta acceder esté indexado correctamente: (Aquí billing.phone)

 const tables = { pos_customers: 'id,first_name,last_name,email,username,billing,billing.phone,shipping,avatar_url,is_true' }

Ahora, asegúrese de actualizar la versión incrementando el valor de la versión en +1.

 database.version(2).stores( applyFilters( DATABASE_ADD_TABLES_FILTER, tables ) ); //previous version(1)

Ahora, ve a la aplicación en Chrome:

  1. Abra Developer Tools (Ctrl+Shift+I / Cmd+Option+I)

  2. Vaya a la Applications Tab , haga clic en su base de datos de destino y haga clic en Delete database

  3. Actualice la página e intente lo que sea que esté tratando de lograr.

¡Deberia de funcionar!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda