Решите грешку „упит захтева индекс“ и омогућите да ваши Фиребасе упити раде у складу са вашом Ангулар апликацијом.
Једна од карактеристика Фиребасе-а је да можете креирати НоСКЛ базу података ускладиштену у облаку. Такође можете да интегришете ову базу података у апликације које развијате и можете да складиштите, ажурирате и бришете податке унутар базе података.
Такође можете да питате Фиребасе базу података из ваше Ангулар апликације. Фиребасе захтева да индексирате комбинације поља за упит који користи више поља. Ово омогућава Фиребасе-у да их лако потражи када позовете упит у неком другом тренутку.
Подесите своју Ангулар апликацију и Фиребасе базу података
Пре него што напишете своје Фиребасе упите, мораћете да креирате Ангулар апликација и Фиребасе база података. Такође ћете морати да конфигуришете своју Ангулар апликацију да се повеже са вашом базом података.
- Ако немате постојећу Ангулар апликацију, можете користити
нг нев команду за креирање новог пројекта са свим потребним Ангулар датотекама.
нг НоваНова-ангулар-апп
- Створити нова Фиребасе база података за апликацију Ангулар тако што ћете се пријавити на Фиребасе и пратити упутства за креирање новог Фиребасе пројекта.
- У вашој новој бази података Цлоуд Фиресторе, направите две колекције (познате и као табеле) за „Производ“ и „Добављач“. Добављач може да испоручи више производа. Сваки производ је такође повезан са добављачем помоћу поља "супплиерИд".
- Унесите следеће податке у табелу „Производ“. Унесите назив, продуцтИд и супплиерИд поља као стрингове. Унесите цену и поља на залихама као бројеве.Ево примера који показује како би ово требало да изгледа:
ИД документа Поља производ1 - назив: "Врпце"
- цена: 12,99
- на лагеру: 10
- ИД производа: "П1"
- СупплиерИд: "С1"
производ2 - назив: "Балони"
- цена: 1.5
- на залихама: 2
- ИД производа: "П2"
- СупплиерИд: "С1"
производ3 - назив: "Папир"
- цена: 2,99
- на лагеру: 20
- ИД производа: "П3"
- СупплиерИд: "С1"
производ4 - назив: "Табела"
- цена: 199
- на залихама: 1
- ИД производа: "П4"
- СупплиерИд: "С2"
- Унесите следеће податке у табелу „Добављач“. Унесите сва поља као низове.Ево како би требало да изгледа унос добављач1:
ИД документа Поља добављач1 - назив: "Добављач уметности и заната"
- локација: "Калифорнија, САД"
- СупплиерИд: "С1"
добављач2 - назив: "Невероватни столови"
- локација: "Сиднеј, Аустралија"
- СупплиерИд: "С2"
- Инсталирај угаона/ватра у вашу апликацију.
нпм и @ангулар/fire
- У Фиребасе-у отворите Подешавања пројекта. Кликните на лого угаоних заграда да додате Фиребасе вашој Ангулар апликацији.
- Фиребасе ће вам пружити детаље о конфигурацији које можете да користите да повежете своју Ангулар апликацију са Фиребасе базом података.
- Замените садржај у окружења/окружење.тс са следећим кодом. Мораћете да промените вредности унутар фиребасеЦонфиг. Промените их тако да одговарају конфигурацији коју вам је Фиребасе пружио у претходном кораку.
извозконст окружење = {
производња: лажно,
фиребасеЦонфиг: {
апиКеи: "АИзаСиБзВиКСБхДлвКСКЕлтНкЕ9кКк-37УБИанДлМ",
аутхДомаин: "муо-фиребасе-куериес.фиребасеапп.цом",
пројецтИд: "муо-фиребасе-куериес",
сторагеБуцкет: "муо-фиребасе-куериес.аппспот.цом",
мессагингСендерИд: "569911365044",
аппИд: "1:569911365044:веб:9557бфеф800цаа5цдаф6е1"
}
}; - Увезите окружење одозго, заједно са Ангулар Фиребасе модулима срц/апп/апп.модуле.тс.
увоз { Животна средина } из "../енвиронментс/енвиронмент";
увоз { АнгуларФиреМодуле } из '@ангулар/фире/цомпат';
увоз { АнгуларФирестореМодуле } из "@ангулар/фире/цомпат/фиресторе"; - Додајте Фиребасе модуле у низ импортова:
АнгуларФирестореМодуле,
АнгуларФиреМодуле.инитиализеАпп(Животна средина.фиребасеЦонфиг)
Како написати сложен Фиребасе упит у датотеци услуга
Можете да постављате упите за табеле у вашој Фиребасе бази података помоћу датотеке услуга.
- Направите нову фасциклу под називом „услуге“. Унутар фасцикле направите нову датотеку под називом „сервице.тс“.
- Додајте АнгуларФиресторе увоз, конструктор и класу у датотеку.
увоз { Ињекционо} из '@ангулар/цоре';
увоз { АнгуларФиресторе } из '@ангулар/фире/цомпат/фиресторе';
@Ињецтабле({
обезбеђено у: 'корен'
})
извозкласаУслуга{
конструктор(приватни дб: АнгуларФиресторе) { }
} - У овом примеру упита наведите производе на основу имена добављача. Поред тога, филтрирајте листу да бисте приказали само ставку са најнижим залихама. Пошто Фиребасе није рационална база података, мораћемо да поставимо упит за две одвојене табеле користећи више од једног упита.
- Да бисте то урадили, креирајте нову функцију под називом гетСупплиер(), за обраду првог упита. Функција ће вратити ред у табели „Добављач“ који одговара имену.
гетСупплиер (име: стринг) {
повратакНоваОбећај((решити)=> {
тхис.дб.цоллецтион('Добављач', реф => реф.вхере('име', '==', име)).валуеЦхангес().субсцрибе (добављач => решити (добављач))
})
} - Креирајте другу функцију под називом гетПродуцтсФромСупплиер(). Овај упит поставља упит у базу података за производе повезане са одређеним добављачем. Поред тога, упит такође наређује резултате према пољу „инСтоцк“ и приказује само први запис на листи. Другим речима, вратиће производ за одређеног добављача, са најмањим бројем „инСтоцк“.
гетПродуцтсФромСупплиер (супплиерИд: стринг) {
повратакНоваОбећај((решити)=> {
тхис.дб.цоллецтион('Производ', реф => реф.вхере('СупплиерИд', '==', супплиерИд).ордерБи('на лагеру').стартАт (0).лимит (1)).валуеЦхангес().субсцрибе (производ => решити (производ))
})
} - У срц/апп/апп.цомпонент.тс датотеку, увезите услугу.
увоз { Сервице } из 'срц/апп/сервицес/сервице';
- Додајте конструктор унутар класе АппЦомпонент и додајте услугу у конструктор.
конструктор(приватна услуга: услуга) { }
- Креирајте нову функцију под називом гетПродуцтСтоцк(). Ова функција ће одштампати производ са најнижим залихама које одређени добављач обезбеђује. Обавезно позовите нову функцију у нгОнИнит() функцију и декларисати променљиву за чување резултата.
производи: било који;
нгОнИнит(): празнина {
ово.гетПродуцтСтоцк();
}
асинц гетПродуцтСтоцк() {}
- Унутар гетПродуцтСтоцк() функцију, користите два упита из сервисне датотеке. Користите први упит да бисте добили запис о добављачу на основу имена. Затим користите супплиерИд као аргумент за други упит, који ће пронаћи производ тог добављача, са најнижим залихама.
дозволити добављач = чекатиово.сервице.гетСупплиер('Добављач уметности и заната');
ово.производи = чекатиово.сервице.гетПродуцтсФромСупплиер (добављач[0].супплиерИд); - Уклоните садржај у срц/апп/апп.цомпонент.хтмл датотеку и замените је следећим:
<х2> Производи са најнижим залихама од "Добављач уметности и заната"</h2>
<див *нгФор="нека ставка производа">
<стр> Име: {{итем.наме}} </п>
<стр> Број на лагеру: {{итем.инСтоцк}} </п>
<стр> Цена: ${{итем.прице}} </п>
</div> - Покрените апликацију у веб претраживачу користећи нг служе команда.
нг служе
- Отворите своју веб локацију користећи било који веб претраживач. Ангулар подразумевано хостује апликацију на локални хост: 4200.
- Ваши подаци се неће исправно приказати на екрану. Кликните десним тастером миша на веб страницу и кликните на Инспецт да бисте отворили алатке за програмере вашег претраживача.
- Идите до Конзола таб. Приказаће се грешка која вас обавештава да ће упит захтевати индекс.
Како да направите сложени индекс за ваш упит
Фиребасе креира индексе за упите који могу да садрже више поља. Према Фиребасе документација, ово делује као мапа, тако да Фиребасе може да потражи локацију поља садржаних у упиту.
- У конзоли кликните на везу коју приказује грешка.
- Пријавите се на свој Фиребасе налог.
- Приказаће се упит са захтевом да креирате индекс за Фиребасе упит. Кликните на Креирајте индекс.
- Фиребасе ће индексирати поља која ваш упит користи. Сачекајте неколико минута док се статус не промени из „Зграда“ у „Омогућено“.
- Освежите свој веб претраживач. Упит ће се покренути и вратити тачан резултат на почетну страницу. Ако отворите програм за отклањање грешака на конзоли користећи алатке за програмере вашег претраживача, грешка више не би требало да постоји.
Упити у вашу Фиребасе базу података
Фиребасе вам омогућава да креирате НоСКЛ базу података у облаку. Затим можете интегрисати ту базу података у Ангулар апликације које развијате. Можете креирати различите типове упита за чување, ажурирање или брисање података. Такође можете креирати упит који користи више поља одједном.
Када креирате упит који користи више поља, покушај да га покренете ће произвести грешку. Мораћете да индексирате комбинацију поља која се користи у упиту, тако да Фиребасе може лако да је потражи кад год покренете упит.
Такође можете сазнати о другим начинима за подешавање НоСКЛ базе података, као што је како да подесите базу података користећи МонгоДБ.