Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

indexeddb não cria nenhuma instancia.

Boa noite, tudo bem?

Estou com um pequeno problema e acredito que seja na hora de instanciar um objeto Storage(). Segui todos os passos onde importamos o modulo Storage, atribuímos ao provider sua useFactory, refatorei a class de serviço e ainda assim não ha registro algum no application no modo de desenvolvedor. Não existe erro no console, então vou tomar a liberdade de expor meu código para que juntos resolvesse mos esse problema.

app.module

import { AgendamentoService } from './../domain/agendamento/agendamento-service';
import { CadastroPage } from './../pages/cadastro/cadastro';
import { HomePage } from '../pages/home/home';
import { EscolhaPage } from './../pages/escolha/escolha';


import { NgModule, ErrorHandler } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { Storage } from '@ionic/storage';


import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';

function provideStorage() {

  return new Storage(['indexeddb'], { 
    name: 'aluracar',
    storeName: 'agendamentos'
  });

}

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    EscolhaPage,
    CadastroPage
  ],
  imports: [
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    EscolhaPage,
    CadastroPage
  ],
  providers: [
    { provide: ErrorHandler, useClass: IonicErrorHandler },
    AgendamentoService,
    { provide: Storage, useFactory: provideStorage }
  ]
})
export class AppModule {}

agendamento-service

import { Storage } from '@ionic/storage';
import { Agendamento } from './agendamento';
import { Http } from '@angular/http';
import { Injectable } from "@angular/core";

@Injectable()

export class AgendamentoService {

    constructor (private _http: Http, private _storage: Storage) {}

     agenda(agendamento: Agendamento) {
            let api =`https://aluracar.herokuapp.com/salvarpedido?carro=${agendamento.carro.nome}&preco=${agendamento.valor}&nome=${agendamento.nome}&endereco=${agendamento.endereco}&email=${agendamento.email}&dataAgendamento=${agendamento.data}`;
            return this._http
                .get(api)
                .toPromise()
                    .then(() => agendamento.confirmado = true, err => console.log(err))
                    .then(() => {
                        let key = agendamento.email + agendamento.data.substr(0,10);
                        return this._storage.set(key, agendamento)
                    })
                    .then(() => agendamento.confirmado);
        }
}

No inicio do curso eu fiz download do projeto em branco, desde então venho codando e alimentando esse mesmo projeto.

Abraço.

3 respostas

Se não há registro é provável que o acesso a API falhou. Já viu se o código que acessa o Storage está sendo chamado?

Fica tranquilo que muitos alunos passaram dessa parte sem problema algum.

Aguardo seu feedback. Aliás, poste o código que usa sua classe de serviço. Verificou o terminal por erros? O terminal do seu SO.

solução!

Flávio, bom dia.

Eu refiz essa aula e agora funcionou. Fiquei feliz em ter conseguido, mas agora vou comparar as duas versões para não cometer o mesmo erro. Já estou na parte dois desse treinamento e sigo muito satisfeito com o conteúdo.

Desde já lhe agradeço.

Que notícia boa! No final da parte 2 você aprenderá a atualizar a App para Ionic 3!

Sucesso e bom estudo meu aluno!