首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将现有的Dexie数据库迁移到新的Dexie数据库,或者如何重命名Dexie数据库?

如何将现有的Dexie数据库迁移到新的Dexie数据库,或者如何重命名Dexie数据库?
EN

Stack Overflow用户
提问于 2018-03-22 07:54:07
回答 1查看 637关注 0票数 0

我有一个web应用程序,它为indexedDB使用了Dexie包装器,出于某种原因,我需要重新命名现有的数据库,没有任何故障,我无法在Dexie文档上找到重命名。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 08:44:15

不支持将数据库重命名为Dexie或本机indexedDB。但是,您可以使用以下代码(未经测试)克隆数据库:

代码语言:javascript
复制
function cloneDatabase (sourceName, destinationName) {
  //
  // Open source database
  //
  const origDb = new Dexie(sourceName);
  return origDb.open().then(()=> {
    // Create the destination database
    const destDb = new Dexie(destinationName);

    //
    // Clone Schema
    //
    const schema = origDb.tables.reduce((result,table)=>{
      result[table.name] = [table.schema.primKey]
        .concat(table.schema.indexes)
        .map(indexSpec => indexSpec.src);
      return result;
    }, {});
    destDb.version(origDb.verno).stores(schema);

    //
    // Clone Data
    //
    return origDb.tables.reduce(

      (prev, table) => prev
        .then(() => table.toArray())
        .then(rows => destDb.table(table.name).bulkAdd(rows)),

      Promise.resolve()

    ).then(()=>{
      //
      // Finally close the databases
      //
      origDb.close();
      destDb.close();
    });
  });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49423263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档