IndexedDB 如何在react-inexed-DB的一个组件中拥有多个getAll函数

jmo0nnb3  于 2023-03-06  发布在  IndexedDB
关注(0)|答案(1)|浏览(164)

我想从一个索引DB中的多个DB获取数据
下面是indexedDB中数据库

const DBUser = {
  name: "userDB",
  version: 2,
  objectStoresMeta: [
    {
      store: "cData",
      storeConfig: { keyPath: "id", autoIncrement: true },
      storeSchema: [
        { name: "userId", keypath: "userId", options: { unique: false } },
        { name: "eData", keypath: "ecgData", options: { unique: false } },
        { name: "date", keypath: "date", options: { unique: false } },
      ],
    },
    {
      store: "oData",
      storeConfig: { keyPath: "id", autoIncrement: true },
      storeSchema: [
        { name: "userId", keypath: "userId", options: { unique: false } },
        { name: "oData", keypath: "ppgData", options: { unique: false } },
      ],
    }
]}

我可以使用getAll函数从上述数据库之一获取我的数据。例如cDataoData与此代码:

const { getAll } = useIndexedDB(cData);
  useEffect(() => {
    getAll().then(dataFromDB => {
      setData(dataFromDB );
    });

  }, []);

当我输入多个getAll时,显然会弹出错误消息Identifier 'getAll' has already been declared.
但是我想在一个组件中同时从cData和oData获取数据。我不能有多个getAll,没有getAll,我就不能获取数据。那么还有什么替代方法呢?我在互联网上找不到任何东西。

lvmkulzt

lvmkulzt1#

我可以简单地这样做:

const { getAll : getAllC } = useIndexedDB(cData);
  useEffect(() => {
    getAll().then(dataFromDB => {
      setData(dataFromDB );
    });

  }, []);

const { getAll : getAllo } = useIndexedDB(oData);
  useEffect(() => {
    getAll().then(dataFromDB => {
      setData(dataFromDB );
    });

  }, []);

相关问题