У нас есть приложение, которое использует angularfire2 для подключения к базе данных Firebase Realtime. App.module.ts выглядит ниже
import { AngularFireModule } from '@angular/fire';
import { AngularFireDatabaseModule } from '@angular/fire/database';
export const firebaseConfig = {
apiKey: "XXXX-XXX-XX",
authDomain: "xxxx.firebaseapp.com",
databaseURL: "https://xxx.firebaseio.com",
projectId: "xxx",
storageBucket: "xxx.appspot.com",
messagingSenderId: "xxxx",
appId: "1:xxxxxx:web:xxxxxx"
};
@NgModule({
declarations: [
AppComponent
],
entryComponents: [],
imports: [
AngularFireModule.initializeApp(firebaseConfig),
AngularFireDatabaseModule,
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
],
providers: [
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
bootstrap: [AppComponent]
})
export class AppModule {}
Существует один сервис, как показано ниже
import { Injectable } from '@angular/core';
import { AngularFireDatabase } from '@angular/fire/database';
import { MitAnalyticsObject } from './model/mit-analytics-object.model';
@Injectable({
providedIn: 'root'
})
export class MitBotAnalyticsService {
constructor(public db:AngularFireDatabase) { }
log(orgName:string, sessionId:string, intent:string, lastUtterance:string, msg:string, time:number, sender:string, os:string, device:string, uid:string){
var anaObj = new MitAnalyticsObject(msg, time, sender, os, device, uid, sessionId, intent, lastUtterance)
console.log("Logging obj:" + JSON.stringify(anaObj))
return new Promise((resolve, reject) => {
this.db.list(orgName + "/messages/").push(anaObj).then
(
(res:any) => {
resolve(res)
}
),
err => {
reject(err)
}
})
}
}
и простое определение объекта, как показано ниже:
export class MitAnalyticsObject {
private _msg:string
private _time:number
private _sender:string
private _os:string
private _device:string
private _uid:string //userid or username
private _sessionId:string
private _intent:string
private _lastUtterance:string
constructor(msg:string, time:number, sender:string, os:string, device:string, uid:string, sessionId:string, intent:string, lastUtterance:string){
this._msg = msg
this._time = time
this._sender = sender
this._os = os
this._device = device
this._uid = uid
this._sessionId = sessionId
this._intent = intent
this._lastUtterance = lastUtterance
}
}
Нет компонента пользовательского интерфейса или чего-либо еще. Он добавлен в пустой ионный проект, поэтому в нем есть компонент пустой страницы, который мне на самом деле не нужен.
Требуется иметь возможность преобразовывать вышеуказанный проект в повторно используемую часть, которую я могу просто импортировать или включить и использовать как библиотеку.
Хост-проект будет только ионным приложением.
Я никогда не делал этого так, задаваясь вопросом, как этого достичь?