Я использую функции firebase для получения данных из db, вот как я это делаю,
exports.getTopPlayers = (request,response)=> {
SavePlayers(function(data,err){
if (err) console.info(err);
response.header('Access-Control-Allow-Origin', '*');
response.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept'
);
const dbRef = admin.database().ref().child('topplayers/-LISMykRqLrVcc7xrK60');
dbRef.on('value', snap => {
var dbPlayer = snap.val();
response.send(dbPlayer);
});
});
Затем я использую его на своем веб-сайте, построенном на angular 6
getTopPlayers() {
return this.http.get(this.topPlayerURL);
}
Это данные в формате ниже,
{value: "[{"name":"WHYALWAYSME","tag":"9P08LYLL","rank":1,"…na":"League 8","arenaID":20,"trophyLimit":6100}}]"}
Я хочу избавиться от этого тега значения. Как я могу? Когда я пытаюсь повторить это, используя
ngFor (*ngFor = "let tp of topPlayer$) it return error, Cannot loop [object,object]
Мне нужны данные в формате ниже,
[
{
name: "Leslie",
tag: "RPP89PVY",
rank: 1,
previousRank: 3,
expLevel: 13,
trophies: 6361,
donationsDelta: null,
clan: {
tag: "9CU2PQ2J",
name: "不正经的养老院",
badge: {
name: "Cherry_Blossom_04",
category: "01_Symbol",
id: 16000131,
image: "https://royaleapi.github.io/cr-api-assets/badges/Cherry_Blossom_04.png"
}
},
arena: {
name: "Grand Champion",
arena: "League 8",
arenaID: 20,
trophyLimit: 6100
}
},
Я нашел решение, В методе angular in component init я сделал следующее: Вызвать сервис и прочитать данные в строковом массиве,
topPlayer$: string[];
ngOnInit() {
this.topPlayerSrvice.getTopPlayers()
.subscribe(response => {
let topPlayer: string[];
topPlayer = response.json();
this.topPlayer$ = JSON.parse(topPlayer['value']);
});
}