Ինչպես պահել, թարմացնել, ջնջել և առբերել տվյալները Firebase տվյալների բազայից Angular-ի միջոցով
Ստեղծեք կապ Firebase տվյալների բազայի հետ Angular-ից և կառավարեք ձեր տվյալները այս ուղեցույցի միջոցով:
Firebase-ը հարթակ է, որը ձեզ տրամադրում է բազմաթիվ ծառայություններ՝ օգնելու հավելվածի ստեղծմանը և մասշտաբավորմանը: Այս առանձնահատկություններից մի քանիսը ներառում են հոսթինգ ծառայություններ, տվյալների պահպանում և տվյալների վերլուծությանը հետևելու հնարավորություն:
Այս ձեռնարկը հիմնականում կենտրոնանում է այն բանի վրա, թե ինչպես ստեղծել և ավելացնել տվյալներ Firebase տվյալների բազայում, և ինչպես կատարել տվյալների բազայում տեղական Angular հավելվածից ստեղծել, կարդալ, գրել և ջնջել գործողություններ:
Ինչպես ստեղծել և ավելացնել տվյալներ Firebase տվյալների բազայում
Ենթադրելով, որ դուք արդեն ունեք Angular հավելված, որը տեղադրված և աշխատում է տեղում, այն պետք է միացված լինի Firebase տվյալների բազային՝ տվյալների պահպանման և մուտք գործելու համար: Եթե ծանոթ չեք Angular-ին, կարող եք ավելին կարդալ Angular կոնցեպտների, բաղադրիչների և Angular նախագծի ընդհանուր կառուցվածքի մասին:
Եթե դուք արդեն չունեք Firebase տվյալների բազա, կարող եք օգտագործել ձեր Google հաշվի հավատարմագրերը Firebase մուտք գործելու համար և հետևելու հրահանգներին: Երբ սա կարգավորվի, ստեղծեք նախագիծ.
- Firebase-ի գլխավոր էջից ընտրեք Գնալ դեպի վահանակ կայքի վերևի աջ անկյունում:
- «Ձեր Firebase նախագծերը» բաժնում ընտրեք Ավելացնել նախագիծ
-
Հետևեք հրահանգներին՝ նոր նախագիծ ստեղծելու համար:
Ավարտելուց հետո նախագիծը կբացվի: Էկրանի ձախ կողմում կա վահանակ, որը թվարկում է Firebase-ի տրամադրած գործառույթները: Սավառնեք պատկերակների վրա, մինչև տեսնեք Firestore Database և ընտրեք այն:
- Ընտրեք Ստեղծել տվյալների բազա, և հետևեք հրահանգներին՝ տվյալների բազա ստեղծելու համար:
Անվտանգության կանոններն ընտրելիս ընտրեք Սկսել փորձնական ռեժիմով: Սա կարող է փոխվել ավելի ուշ՝ ապահովելու համար, որ տվյալները ավելի անվտանգ են: Դուք կարող եք ավելին կարդալ Firestore-ի անվտանգության կանոնների մասին՝ հետևելով Firebase-ի փաստաթղթերին:
- Ավարտելուց հետո տվյալների բազան կբացվի: Տվյալների բազայի կառուցվածքը օգտագործում է Հավաքածուներ, որն ըստ էության նույն հասկացությունն է, ինչ տվյալների բազայի աղյուսակները: Օրինակ, եթե ձեզ անհրաժեշտ է երկու աղյուսակ, մեկը՝ հաշվի տեղեկատվությունը, իսկ մեկը՝ օգտատիրոջ տվյալները, դուք կստեղծեիք երկու հավաքածու՝ «Հաշիվ» և «Օգտատեր» անուններով:
Ընտրեք Սկսել հավաքածուն և ավելացրեք Հավաքածուի ID, որը կոչվում է «Օգտվող»:
Ավելացրեք առաջին գրառումը՝ մեկ օգտագործողի մասին տեղեկություններով: Սեղմեք Ավելացնել դաշտ ՝ երեք նոր դաշտ ավելացնելու համար՝ firstName (տող), ազգանուն (string) և vipMember (բուլյան): Փաստաթղթի ID-ն կարող է ավտոմատ ստեղծվել:
- Սեղմեք Պահել:
- «Օգտատեր» հավաքածուին ավելի շատ գրառումներ ավելացնելու համար սեղմեք Ավելացնել փաստաթուղթ (ավելացնել փաստաթուղթը համարժեք է նոր գրառում կամ օգտվող ավելացնելուն): Ավելացրեք ևս չորս օգտատեր նույն երեք դաշտերով:
Տվյալների բազան այժմ ստեղծվել է փորձարկման որոշ տվյալների հետ:
Ինչպես ինտեգրել Firebase-ը ձեր անկյունային հավելվածում
Ձեր տեղական Angular հավելվածում այս տվյալները մուտք գործելու համար նախ կարգավորեք հավելվածի որոշ կարգավորումներ Firebase տվյալների բազայի հետ միանալու համար.
- Firebase-ում անցեք ձախ կողմի վահանակ և սեղմեք Նախագծի ընդհանուր տեսություն:
- Ընտրեք Web կոճակը (նշված է Անկյունային փակագծերով):
Գրանցեք ձեր տեղական հավելվածը՝ ավելացնելով հավելվածի անունը:
Տեղադրեք Firebase-ը ձեր տեղական Angular հավելվածում:
npm i firebase
- Այնուհետև Firebase-ը կցուցադրի կազմաձևման որոշ մանրամասներ: Պահպանեք այս մանրամասները և սեղմեք Շարունակել կոնսոլին:
Ելնելով նախորդ քայլում տրված մանրամասներից՝ պատճենեք հետևյալ կոդը Angular հավելվածի միջավայրում.prod.ts և ambient.ts:
export const environment = { production: true, firebaseConfig: { apiKey: "your-api-key", authDomain: "your-auth-domain", projectId: "your-project-id", storageBucket: "your-storage-buckey", messagingSenderId: "your-messaging-sender-id", appId: "your-api-id", measurementId: "your-measurement-id" } };
AngularFirestore-ը @angular/fire/firestore-ից կօգտագործվի Firebase-ը Angular-ում կարգավորելու համար: Նկատի ունեցեք, որ AngularFirestore-ը համատեղելի չէ Angular 9-րդ և ավելի բարձր տարբերակի հետ: Տեղական Angular հավելվածում գործարկեք՝
npm i @angular/fire
Ավելացրեք Firestore և շրջակա միջավայրի մոդուլները app.module.ts-ի ներմուծման բաժնում:
import { AngularFireModule } from "@angular/fire"; import { AngularFirestoreModule } from "@angular/fire/firestore"; import { environment } from "../environments/environment";
Firestore մոդուլները նույնպես պետք է ներառվեն app.module.ts-ի ներմուծման զանգվածում:
AngularFireModule.initializeApp(environment.firebaseConfig), AngularFirestoreModule,
Ինչպես ստանալ տվյալներ Firebase-ից՝ օգտագործելով ծառայությունը
Սովորաբար լավ պրակտիկա է ունենալ մեկ կամ մի քանի services.ts ֆայլ, որոնք դուք օգտագործում եք տվյալների բազայի հետ հատուկ փոխազդեցության համար: Գործառույթները, որոնք ավելացնում եք ծառայությունների ֆայլում, այնուհետև կարող են կանչվել այլ TypeScript ֆայլերում, էջերում կամ այլ բաղադրիչներում ամբողջ հավելվածում:
- src/app/services պանակում ստեղծեք service.ts անունով ֆայլ:
-
Ներմուծման բաժնում ավելացրեք AngularFirestore մոդուլը և ներառեք այն կոնստրուկտորում:
import { Injectable } from '@angular/core'; import { AngularFirestore } from '@angular/fire/firestore'; @Injectable({ providedIn: 'root' }) export class Service { constructor(private db: AngularFirestore) { } }
Ավելացրեք գործառույթ, որը վերադարձնում է խոստում, որը պարունակում է բոլոր օգտագործողների ցուցակը: «
this.db.collection('User')
»-ը վերաբերում է տվյալների բազայի «Օգտատեր» հավաքածուին:getAllUsers() { return new Promise<any>((resolve)=> { this.db.collection('User').valueChanges({ idField: 'id' }).subscribe(users => resolve(users)); }) }
Այս ֆունկցիան մեկ այլ TypeScript ֆայլում օգտագործելու համար ներմուծեք նոր ծառայությունը և ավելացրեք այն կոնստրուկտորին:
import { Service } from 'src/app/services/service constructor(private service: Service) {}
Ստացեք ծառայությունների ֆայլում ստեղծված գործառույթից օգտվող բոլոր օգտատերերի ցանկը:
async getUsers() { this.allUsers = await this.service.getAllUsers(); console.log(this.allUsers); }
Ինչպես ավելացնել նոր գրառում Firebase տվյալների բազայում
Օգտատիրոջ համար նոր գրառում ավելացրեք Firebase տվյալների բազայում:
Services.ts-ում ավելացրեք նոր գործառույթ՝ նոր գրառում ստեղծելու համար: Այս ֆունկցիան ընդունում է նոր օգտվողի ID-ն և նրա բոլոր տվյալները: Այն օգտագործում է Firestore-ի set ֆունկցիան այդ տեղեկատվությունը Firebase-ին ուղարկելու և նոր գրառում ստեղծելու համար:
addNewUser(_newId:any, _fName:string, _lName:string, _vip:boolean) { this.db.collection("User").doc(_newId).set({firstName:_fName,lastName:_lName,vipMember:_vip}); }
Կանչեք addNewUser() ֆունկցիան մեկ այլ TypeScript ֆայլում: Մի մոռացեք ներմուծել ծառայությունը և ներառել այն կոնստրուկտորում, ինչպես ցույց է տրված ավելի վաղ: Ազատորեն օգտագործեք պատահական ID գեներատոր՝ օգտագործողի համար նոր ID-ն ստեղծելու համար:
this.service.addNewUser("62289836", "Jane", "Doe", true);
Ինչպես թարմացնել տվյալները Firebase տվյալների բազայում
Firebase-ն ունի բազմաթիվ գործառույթներ, որոնք այն դարձնում են լավագույն հասանելի գործիքներից մեկը: Որոշակի գրառումներում որոշակի դաշտեր թարմացնելու համար օգտագործեք Firestore-ի թարմացման գործառույթը:
Service.ts ֆայլում ստեղծեք գործառույթ, որը կոչվում է updateUserFirstName(): Այս գործառույթը կթարմացնի ընտրված օգտվողի գրառումների անունը: Ֆունկցիան ընդունում է թարմացման կարիք ունեցող գրառման ID-ն և օգտագործողի անվան նոր արժեքը:
updateUserFirstName(_id:any, _firstName:string) { this.db.doc(`User/${_id}`).update({firstName:_firstName}); }
Միևնույն գրառման համար մի քանի դաշտեր թարմացնելու համար պարզապես ընդարձակեք այն դաշտերը, որոնք մուտքագրվում են Firestore-ի թարմացման գործառույթի ներսում: Պարզապես firstName-ի փոխարեն ավելացրեք ազգանունը, որպեսզի այն նույնպես թարմացվի նոր արժեքով:
updateUserFullName(_id:any, _firstName:string, _lastName:string) { this.db.doc(`User/${_id}`).update({firstName:_firstName,lastName:_lastName}); }
Վերոնշյալ գործառույթներից որևէ մեկը կարող է օգտագործվել այլ TypeScript ֆայլերում:
this.service.updateUserFirstName("vLBnSegFl1pD7XQ42TBv", "Kay"); this.service.updateUserFullName("vLBnSegFl1pD7XQ42TBv", "Kay", "Jones");
Ինչպես ջնջել գրառումը Firebase տվյալների բազայից
Գրառումը ջնջելու համար օգտագործեք Firestore-ի ջնջման գործառույթը:
Service.ts ֆայլում ստեղծեք գործառույթ, որը կոչվում է deleteUser(): Այս ֆունկցիան ընդունում է այն գրառման ID-ն, որը պետք է ջնջվի:
deleteUser(_id:any) { this.db.doc(`User/${_id}`).delete(); }
Վերոնշյալ գործառույթը կարող է օգտագործվել այլ TypeScript ֆայլերում:
this.service.deleteUser("vLBnSegFl1pD7XQ42TBv");
Առբերեք Firebase-ի տվյալները՝ օգտագործելով հարցումներ և զտիչներ
«Որտեղ» ֆիլտրը կարող է զտել արդյունքները, որոնք վերադարձվում են կոնկրետ պայմանի հիման վրա:
Services.ts-ում ստեղծեք գործառույթ, որը ստանում է բոլոր VIP օգտվողներին (սա այն դեպքում, եթե vipMember դաշտը սահմանված է true-ի): Սա նշվում է ստորև Firebase զանգի «ref.where('vipMember', '==', true)» մասով:
getAllVipMembers() { return new Promise<any>((resolve)=> { this.db.collection('User', ref => ref.where('vipMember', '==', true)).valueChanges().subscribe(users => resolve(users)) }) }
Օգտագործեք այս գործառույթը մեկ այլ TypseScript ֆայլում:
async getAllVipMembers() { this.vipUsers = await this.service.getAllVipMembers(); console.log(this.vipUsers); }
Հարցումը կարող է փոփոխվել՝ ավելացնելու այլ գործողություններ, ինչպիսիք են՝ Պատվիրել, Սկսել ժամը կամ Սահմանափակել: Փոփոխեք getAllVipMembers() ֆունկցիան services.ts-ում՝ ազգանունով պատվիրելու համար: «Պատվեր ըստ գործողության» կարող է պահանջվել Firebase-ում ինդեքս ստեղծել: Եթե դա այդպես է, սեղմեք վահանակի սխալի հաղորդագրության մեջ նշված հղման վրա:
getAllVipMembers() { return new Promise<any>((resolve)=> { this.db.collection('User', ref => ref.where('vipMember', '==', true).orderBy('lastName')).valueChanges().subscribe(users => resolve(users)) }) }
Փոփոխեք հարցումը՝ վերադարձնելու միայն առաջին երեք գրառումները: Դրա համար կարող են օգտագործվել Start At և Limit գործողությունները: Սա օգտակար է, եթե դուք պետք է իրականացնեք փեյջինգ, որն այն դեպքում, երբ յուրաքանչյուր էջում ցուցադրվում է որոշակի թվով գրառումներ:
getAllVipMembers() { return new Promise<any>((resolve)=> { this.db.collection('User', ref => ref.where('vipMember', '==', true).orderBy('lastName').startAt(0).limit(3)).valueChanges().subscribe(users => resolve(users)) }) }
Ավելացրեք ավելի շատ տվյալներ Firebase-ին և ավելի շատ հարցումներ Angular հավելվածում
Կան բազմաթիվ այլ հարցումների համակցություններ, որոնք կարող եք ուսումնասիրել Firebase տվյալների բազայից տվյալներ առբերելիս: Հուսով ենք, որ դուք հիմա հասկանում եք, թե ինչպես ստեղծել պարզ Firebase տվյալների բազա, ինչպես միացնել այն տեղական Angular հավելվածին և ինչպես կարդալ և գրել տվյալների բազայում:
Դուք կարող եք նաև ավելին իմանալ Firebase-ի տրամադրած այլ ծառայությունների մասին: Firebase-ը այն բազմաթիվ հարթակներից մեկն է, որը կարող եք ինտեգրվել Angular-ի հետ, և անկախ նրանից՝ դուք սկսնակ կամ առաջադեմ մակարդակի վրա եք, միշտ շատ ավելին կա սովորելու: