Учитывая следующую структуру данных, каков наиболее эффективный способ получения level
для каждого character
на основе их experience
? Я знаю, что я мог магазин level
с другими свойствами, но надеясь, что есть способ сделать это, не делая этого.Как правильно вычислить дочерние данные?
{
"characters": {
"-k1239748": {
"name": "Ada",
"experience": 0
},
"-k827493": {
"name": "Beth",
"experience": 2331
},
"-k344432": {
"name": "Carol",
"experience": 4789
}
},
"levels": {
"-k123433": {
"level": 1
"minimumExperience": 0
},
"-k412312": {
"level": 2
"minimumExperience": 2000
},
"-k113433": {
"level": 3
"minimumExperience": 4000
}
}
}
Ожидаемый результат будет:
ada.level = 1
beth.level = 2
carol.level = 3
Мое предположение, что нет более простой способ, чем:
- захватывая список
characters
- захватывая список
levels
в пределахcomplete
block - it используя каждый из
character
и присваивая свойствуcharacter.level
все, что я получаю, от какой-либо функции, которую я бы назвалgetLevelForExperience(experience)
.
Я считаю, что это своего рода утомительным и ненужным, особенно когда приходит из SQL, где я мог бы просто сделать JOIN
, или имеют некоторые вычисляемые свойства в C#
, которые могут захватить значение из функции только тогда, когда это необходимо, и т.д. .
Что я ищу синтаксис для делать что-то вроде следующего:
this.af.database.list('/characters')
.map(characterResult => {
this.af.database.list('/levels').startAt(result.experience).first()
.subscribe(levelResult => {
result.level = levelResult;
});
return characterResult;
});
Я использую некоторые псевдокод в середине выше блока, потому что я не уверен, что подходит, где, и независимо от того, что я не знаю, что это залог r, но я просто не могу окунуться в лучший способ получить такие значения эффективно, не дублируя избыточные данные в моей таблице на set
или update
.
Спасибо!
в качестве примера, как выше, я сократил некоторые данные, но уровни все имеют больше данных вместе с ним, поэтому сокращение до массива не будет работать. Независимо от того, я специально пытаюсь понять, как это выглядит, используя AngularFire2 и/или шаблон Observable в целом, используя внутренние подписки/карты и все такое. Не совсем структура схемы. Как и в случае, представьте себе, что у меня были данные о детях, которые мне нужно было оценить, вытаскивая каждого конкретного пользователя и отображая его вместе со списком пользователей. – bdrelling