[英]Fetching firebase data from a service
我想从组件文件中的firebase.service.ts中获取用户值。
返回用户以使其可以在stats.component.ts文件中访问的方式是什么? 如何在服务中的then块内返回值,以便component.ts中的myData变量具有该服务中更新的用户值。
import { Injectable } from "@angular/core";
import { Observable as RxObservable } from "rxjs/Observable";
import { HttpClient, HttpHeaders, HttpResponse } from "@angular/common/http";
import "rxjs/add/operator/map";
import "rxjs/add/operator/do";
import * as firebase from "nativescript-plugin-firebase";
@Injectable()
export class DataService {
user= [];
constructor() { }
firebaseInit() {
firebase.init({
}).then(
() => {
// console.log("initialized");
firebase.getValue('/companies')
.then(result => {
// JSON.stringify(result) will return the json object
// result.value will get the value
console.log(JSON.stringify(result.value));
this.user = result.value;
})
.catch(error => console.log("Error:" + error));
}
).catch(
(err) => {console.log("Error is: " + err)}
)
}
sendData() {
console.log( "Outside firebaseInit" + this.user);
}
}
import { Component, OnInit,Inject } from '@angular/core';
import {DataService} from "../services/firebase.service";
@Component({
moduleId:module.id,
templateUrl: "./stats.component.html"
})
export class StatsComponent {
private mydata;
constructor(private dataService:DataService){
}
ngOnInit(){
this.mydata = this.dataService.firebaseInit();;
}
}
您可以在服务中尝试此方法。 您应该在方法中返回数据
firebaseInit() {
return firebase.init({
}).then(
() => {
// console.log("initialized");
return firebase.getValue('/companies')
.then(result => {
// JSON.stringify(result) will return the json object
// result.value will get the value
console.log(JSON.stringify(result.value));
this.user = result.value;
return this.user;
})
.catch(error => console.log("Error:" + error));
}
).catch(
(err) => {console.log("Error is: " + err)}
)
}
ngOnInit(){
this.dataService.firebaseInit().then(data => this.mydata = data);
}
您必须返回.then函数内的每个函数和结果,任何丢失的返回都将破坏Promise链。
您可以直接返回结果,而无需分配给另一个变量。
firebaseInit() {
return firebase.init({
}).then(
() => {
// console.log("initialized");
return firebase.getValue('/companies')
.then(result => {
// JSON.stringify(result) will return the json object
// result.value will get the value
console.log(JSON.stringify(result.value));
return result.value;
})
.catch(error => console.log("Error:" + error));
}
).catch(
(err) => {console.log("Error is: " + err)}
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.