Por exemplo, qual seria o processo para criar a Storage 'Restaurante' com as storeNames: 'cardapio' e 'clientes'
Por exemplo, qual seria o processo para criar a Storage 'Restaurante' com as storeNames: 'cardapio' e 'clientes'
A documentação não deixa claro esse suporte. Contudo você pode criar um Storage para cada storage que deseje trabalhar. Mas a injeção de dependência será por string e não tipo.
Eu mostro como assim que estiver no meu computador. Vamos torcer, porque segundo esse post não há suporte ainda:
https://forum.ionicframework.com/t/multiple-instances-support-in-ionic-storage-v-1-1-7/73875
Se não quiser esperar, talvez usar o Sqlite diretamente seja solução. Mas escreverá muito código! Segue exemplo
https://www.thepolyglotdeveloper.com/2015/12/use-sqlite-in-ionic-2-instead-of-local-storage/
Vitor, a solução que eu vou lhe mostrar, você só pode aplicar quando chegar no último capítulo da parte 2 do curso de Ionic2, certo?
Então, você precisa criar duas funções que retornam um provider. Cada função retorna uma configuração para uma storage do Ionic. Vejamos:
import { NgModule, ErrorHandler } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { EscolhaPage } from '../pages/escolha/escolha';
import { CadastroPage } from '../pages/cadastro/cadastro';
import { AgendamentoService } from '../domain/agendamento/agendamento-service';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import { Storage } from '@ionic/storage';
import { AgendamentoDao } from '../domain/agendamento/agendamento-dao';
import { AgendamentosPage } from '../pages/agendamentos/agendamentos';
import { LoginPage } from '../pages/login/login';
import { UsuarioService } from '../domain/usuario/usuario-service';
import { PerfilPage } from '../pages/perfil/perfil';
// PRIMEIRO PROIDER, PARA agendamentos
function provideStorage1() {
return new Storage(['indexeddb'], {
name: 'aluracar',
storeName: 'agendamentos'
});
}
// SEGUNDO PROVIDER, para clientes
function provideStorage2() {
return new Storage(['indexeddb'], {
name: 'aluracar',
storeName: 'clientes'
});
}
@NgModule({
declarations: [
MyApp,
HomePage,
EscolhaPage,
CadastroPage,
AgendamentosPage,
LoginPage,
PerfilPage
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
EscolhaPage,
CadastroPage,
AgendamentosPage,
LoginPage,
PerfilPage
],
providers: [
{ provide: ErrorHandler, useClass: IonicErrorHandler },
AgendamentoService,
{ provide: 'agendamentoStorage', useFactory: provideStorage1},
{ provide: 'clienteStorage', useFactory: provideStorage2},
AgendamentoDao,
UsuarioService
]
})
export class AppModule {}
Veja que os dois providers foram adicionamos com os apeldos agendamentoStorage
e clienteStorage
.
Dai, a injeção do Storage muda. Você não pode mais injetar por tipo, precisará injetar pelos nomes agendamentoStorage
e clienteStorage
:
Em AgendamentoDao, a injeção ficaria assim:
import { Injectable, Inject } from '@angular/core';
import { Agendamento } from '../../domain/agendamento/agendamento';
import { Storage } from '@ionic/storage';
import { Carro } from '../../domain/carro/carro';
@Injectable()
export class AgendamentoDao {
constructor(
@Inject('agendamentoStorage') private _agendamentoStorage: Storage,
@Inject('clienteStorage') private _clienteStorage: Storage
) {}
// código posterior omitido
Se quiser os dois, basta injetar os dois no constructor. Essa é uma solução não documentada baseada no conhecimento do Angular e não da plataforma Ionic2.
Como eu disse, deixe para fazer essa alteração só no último capítulo da parte 2 do curso.
Sucesso e bom estudo!
Obrigado pela ajuda Flávio, na verdade eu ja terminei a carreira de ionic 2. Tenho um projeto pra fazer da faculdade e vou aproveitar pra fazer em ionic pra ir treinando o que aprendi. Vou testar sua solução, espero que me atenda.
Novamente, obrigado pela ajuda !
Flávio, obrigado pela ajuda !!! Funcionou muito bem para o que eu precisava.
Segue o url do projeto: https://github.com/vitordelfino/Restaurante-ES3
Id no Ionic View: 290f0c5c
Assim que der uma folga aqui dou uma olhada. Esse ionic view é da hora para compartilhar!
Ficou bem organizado. Aliás você usou a organização de pastas by feature que uso no curso. Eu a prefiro em vez de ser by type.
Parabéns!