Я использую response-indexed-db библиотеку для обработки indexedDB браузера для хранения некоторых данных.
Сначала я опубликовал свой веб-сайт с одним хранилищем объектов: - src / config / DBConfig. js
export const DBConfig = {
name: "bookDB",
version: 1,
objectStoresMeta: [
{
store: "reads",
storeConfig: { keyPath: "hash", autoIncrement: false },
storeSchema: [
{ name: "hash", keypath: "hash", options: { unique: true } },
{ name: "token", keypath: "token", options: { unique: true } },
{ name: "sa", keypath: "sa", options: { unique: false } },
{ name: "ss", keypath: "ss", options: { unique: false } },
],
}
],
};
И сегодня я добавил новое хранилище объектов в ту же базу данных: -
export const DBConfig = {
name: "bookDB",
version: 1,
objectStoresMeta: [
{
store: "reads",
storeConfig: { keyPath: "hash", autoIncrement: false },
storeSchema: [
{ name: "hash", keypath: "hash", options: { unique: true } },
{ name: "token", keypath: "token", options: { unique: true } },
{ name: "sa", keypath: "sa", options: { unique: false } },
{ name: "ss", keypath: "ss", options: { unique: false } },
],
},
{
store: "books",
storeConfig: { keyPath: "hash", autoIncrement: false },
storeSchema: [
{ name: "hash", keypath: "hash", options: { unique: true } },
{ name: "token", keypath: "token", options: { unique: true } },
],
},
],
};
Пример файла того, как я вызываю оба объекта базы данных: -
import React, { useEffect, useState } from "react";
import axios from "axios";
import { initDB, useIndexedDB } from "react-indexed-db";
import { DBConfig } from "../config/DBConfig";
initDB(DBConfig);
const BookRead = (props) => {
const readsObject = useIndexedDB("reads");
const booksObject = useIndexedDB("books");
const [storedRead, setStoredRead] = useState();
const [data, setData] = useState();
useEffect(() => {
readsObject
.getByIndex("hash", props.match.params.id)
.then((data) => {
setStoredRead(data);
})
.catch((e) => {});
}, []);
const readRequest = (token) => {
axios
.post(`${process.env.REACT_APP_API_URL}book/read`, {
name: readerName(),
token: token,
})
.then((res) => {
if (res.data.token) {
booksObject.add({
hash: props.match.params.id,
token: res.data.token,
});
readsObject.add({
hash: props.match.params.id,
token: res.data.token,
ss: "",
sa: "",
});
} else {
setData(res.data);
}
})
.catch((error) => {
console.log(error);
});
};
return <div>Book Content</div>;
};
export default BookRead;
Теперь в некоторых браузерах я вижу, что новое хранилище объектов «книги» создается, а в некоторых еще не создано.
Связано ли это с версией схемы indexedDB?