node.js - visual - ¿Cómo acceder a los archivos IndexedDB/LevelDB de Google Chrome?
node-inspector (1)
Quiero usar IndexedDB de Google Chrome para conservar los datos en el lado del cliente.
La idea es acceder a IndexedDB fuera de Chrome, a través de Node.JS, más adelante. El fondo es la idea de rastrear el comportamiento de uso localmente y almacenar los datos recopilados en el cliente para su posterior análisis sin un servidor back-end.
A mi entender, el indexedDB se implementa como un LevelDB. Sin embargo, no puedo abrir levelDB con ninguna de las herramientas / LevelUp como LevelUp / LevelDown o leveldb-json .
Siempre recibo este mensaje de error:
leveldb-dump-to-json --file test.json --db https_www.reddit.com_0.indexeddb.leveldb
events.js:141
throw er; // Unhandled ''error'' event
^ OpenError: Invalid argument: idb_cmp1 does not match existing comparator : leveldb.BytewiseComparator
at /usr/local/lib/node_modules/leveldb- json/node_modules/levelup/lib/levelup.js:114:34 Christians-Air:IndexedDB
¿Alguien por favor puede ayudar? Parece que la implementación de Chrome es de alguna manera especial / diferente.
Las claves en leveldb son secuencias binarias arbitrarias. Los clientes implementan comparators para definir la ordenación entre claves. El comparador predeterminado para leveldb es algo equivalente a strncmp
. El comparador de Chrome para la tienda Indexed DB es más complicado. Si intenta usar una instancia de leveldb con un comparador diferente del que fue creado, observará las claves en un orden aparentemente aleatorio, la inserción sería impredecible o causaría corrupción: perros y gatos que viven juntos, histeria masiva. Entonces leveldb le permite nombrar el comparador (persistente en la base de datos) para ayudar a detectar y evitar este error, que es lo que está viendo. El código de Chrome nombra a su comparador para la base de datos indexada "idb_cmp1".
Para inspeccionar una de las instancias de la base de datos indexada de Chrome fuera de Chrome necesitaría implementar un comparador compatible. El código reside en la implementación de Chrome en content / browser / indexed_db / indexed_db_backing_store.cc, y tenga en cuenta que no hay garantía de que esto se solucione en todas las versiones. (Aparte de la compatibilidad con versiones anteriores, por supuesto)