【问题标题】:ERROR Error: Database not created. Must call create() firstERROR 错误:未创建数据库。必须先调用 create()
【发布时间】:2021-07-14 12:44:36
【问题描述】:

您好,我的应用在为基于角色的身份验证添加身份验证服务后遇到此错误“未创建数据库。必须先调用 create()”。

我可以知道解决办法吗?

core.js:6456 ERROR Error: Database not created. Must call create() first
    at Storage.assertDb (index.js:64)
    at Storage.set (index.js:84)
    at AuthService.login (auth.service.ts:35)
    at LoginPage.login (login.page.ts:54)
    at LoginPage_Template_ion_button_click_19_listener (template.html:45)
    at executeListenerWithErrorHandling (core.js:15285)
    at wrapListenerIn_markDirtyAndPreventDefault (core.js:15323)
    at HTMLElement.<anonymous> (platform-browser.js:560)
    at ZoneDelegate.invokeTask (zone.js:434)
    at Object.onInvokeTask (core.js:28661)

【问题讨论】:

    标签: firebase ionic-framework


    【解决方案1】:

    我想你使用@ionic/storage 却错过了this.storage.create(); 电话。

    来自documentation

    接下来,将 Storage 注入到组件中。注意:这种方法的意思是 用于单个组件(例如 AppComponent)。在这种情况下, create() 应该只被调用一次。用于多个组件, 我们建议创建一个服务(参见下一个示例)。

    import { Component } from '@angular/core';
    import { Storage } from '@ionic/storage-angular';
    
    @Component({
        selector: 'app-root',
        templateUrl: 'app.component.html'
    })
    export class AppComponent {
        constructor(private storage: Storage) {}
    
        async ngOnInit() {
          // If using a custom driver:
          // await this.storage.defineDriver(MyCustomDriver)
          await this.storage.create();
        }
    }
    

    对于 React、Vue、Vanilla JavaScript 逻辑类似 (documentation):

    import { Storage } from '@ionic/storage';
    
    const store = new Storage();
    await store.create();
    

    【讨论】:

    • 您好先生,上面的代码应该在哪里添加?在 mypage.ts 、 app.component.ts 或 auth.service.ts 中?
    • @brook18 你应该在你的其他storage 电话之前添加这个。应该是第一个电话。如果您在多个文件中使用storage,那么您应该更愿意按照文档中的说明创建service
    猜你喜欢
    • 2011-09-09
    • 2021-08-31
    • 2020-09-16
    • 2021-12-25
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    相关资源
    最近更新 更多