Anglar 애플리케이션과 Firebase를 함께 사용하여 Cloud Firestore 사용
데이터베이스에는 Cloud Firestore 가 사용됩니다.
작업 환경
이번에는 다음 버전을 사용합니다.
Firebase 측면 설정
프로젝트 작성
(웹 페이지)에서 응용 프로그램 등록
Firebase Hosting 설정 확인
Firebase CLI 로컬 설치
이미 설치되어 있기 때문에 이 버전을 사용하세요.
% firebase --version
10.4.0
Firebase CLI에서 Google에 로그인
로그인하면 메일 주소가 표시됩니다.
% firebase login
Already logged in as [email protected]
어플리케이션 설정
Fireabse 처리를 위한 Anglar 라이브러리 설치
ng add @angular/fire
ng add
명령을 사용하면 자동으로 설정할 수 있어 편리하다.angular.json을 열고 스크립트 아래에 추가 설정
"allowedCommonJsDependencies": [
"firebase",
"@firebase/database"
]
설치 유형 정의 파일
npm i @types/angularfire --save-dev
환경 변수 설정
Firebase 프로젝트에서 제 사전 설정에 이르기까지 FirebaseConfig의 값은 app/environments/environment입니다.ts가fireabse 속성으로 설정되었는지 확인하십시오.
ng add
명령을 실행할 때 기록되어야 합니다.export const environment = {
production: false,
apiKey: ...
authDomain: ...
databaseUrRL: ...
모듈 사용
app/app.modules.ts에서 AngualrFire 모듈을 설정합니다.
import { AngularFireModule } from '@angular/fire/compat';
import { environment } from '../environments/environment';
imports: [
(略)
AngularFireModule.initializeApp(environment.firebase),
],
ng add
명령에 다음 코드를 추가합니다.이번에는 AngularFireModule
를 사용해야 하기 때문에 이것을 먼저 삭제합니다.provideFirebaseApp(() => initializeApp(environment.firebase)),
provideAuth(() => getAuth()),
provideFirestore(() => getFirestore()),
데이터베이스 초기 설정
Realtime Database 또는 Cloud Firestore를 사용하여 데이터베이스를 생성합니다.이번에는 Firestore의 테스트 모드로 시작합니다.
미리 규칙을 읽고 쓸 수 있도록
Anglar에서 Firebase 데이터를 조작해 보세요.
예시로 집합을 표시하고 등록하는 데 사용되는 문서 applicants 코드를 보여 줍니다.
테스트에 데이터를 추가합니다.
목록 보기 구현
applicant.service.ts라는 서비스를 제작했기 때문에 그 중에서 일람 데이터를 얻어 되돌려줍니다.
snapshotChanges()
를 observable
로 사용하여 map
를 얻고 조작원이 미리 모양을 정리한다.id는 잠시 후 자세한 화면 설치에서 사용됩니다.import {
AngularFirestore,
AngularFirestoreCollection,
} from '@angular/fire/compat/firestore';
import { Observable } from 'rxjs';
import { Applicant } from './class/applicant';
export class ApplicantService {
private applicantsCollection: AngularFirestoreCollection<Applicant>;
applicants$: Observable<Applicant[]>;
constructor(private afs: AngularFirestore) {
this.applicantsCollection = afs.collection<Applicant>('applicants');
this.applicants$ = this.applicantsCollection.snapshotChanges().pipe(
map((actions) =>
actions.map((a) => {
const data = a.payload.doc.data() as Applicant;
const id = a.payload.doc.id;
return { id, ...data };
})
)
);
}
구성 요소 옆에Firestore에서 가져온 모음집을 표시하려면 구성 요소 옆의ts 파일에DI(의존성 주입)를 넣습니다.export class ListComponent implements OnInit {
applicants$: Observable<Applicant[]>;
constructor(private applicantService: ApplicantService) {
this.applicants$ = this.applicantService.applicants$;
}
사용 파일| async
은 다음과 같다.<ul *ngFor="let applicant of applicants$ | async">
<li>{{ applicant.name }}</li>
</ul>
브라우저를 열면 목록에 1랑 및 2랑을 표시할 수 있습니다.등록 처리의 실현
어셈블리 측면의 >에서 양식을 설정합니다.단추를 눌렀을 때 방법의 실행과 텍스트 영역이 비어 있습니다.
<div class="mb-3">
<label class="form-label">名前</label>
<input type="text" [(ngModel)]="applicant.name" class="form-control" />
</div>
<button
(click)="addApplicant(applicant); applicant.name = ''"
type="button"
class="btn btn-outline-info"
>
送信
</button>
어셈블리 측면의 ts 파일을 편집합니다.서비스에 설치된 로그인 방법을 호출 일람 페이지로 변경합니다.
import { Router } from '@angular/router';
import { Applicant } from '../applicant';
import { ApplicantService } from '../applicant.service';
constructor(
private applicantService: ApplicantService,
private router: Router
) {}
ngOnInit(): void {}
addApplicant(applicant: Applicant): void {
this.applicantService
.addApplicant(applicant)
.then(() => this.router.navigateByUrl('/list'));
}
서비스 측에서 Firestore에 대한 등록 처리를 실시한다.import {
AngularFirestore,
AngularFirestoreCollection,
} from '@angular/fire/compat/firestore';
import { Applicant } from './class/applicant';
export class ApplicantService {
private applicantsCollection: AngularFirestoreCollection<Applicant>;
(略)
addApplicant(applicant: Applicant) {
return this.applicantsCollection.add(applicant);
}
이로써 폼에서 입력한 값은Firestore에 등록할 수 있습니다.고급 디스플레이의 실현
일람된 항목에 링크를 붙여넣습니다.
<ul *ngFor="let applicant of applicants$ | async">
<li>
<a routerLink="/detail/{{ applicant.id }}">
{{ applicant.name }}
</a>
</li>
</ul>
링크의 URL은 http://localhost:4200/detail/mq0h4o49rNexxxxxxx과 같은 형식입니다.어셈블리를 생성하고 라우트를 다음과 같이 설정합니다.
const routes: Routes = [
{ path: '', component: FormComponent },
{ path: 'list', component: ListComponent },
{ path: 'detail/:id', component: DetailComponent }, 👈 追記
];
구성 요소 측면의ts 파일에 자세한 데이터를 접근하여 구성원 변수에 대입합니다.import { Observable } from 'rxjs';
import {
AngularFirestore,
AngularFirestoreDocument,
} from '@angular/fire/compat/firestore';
import { ActivatedRoute } from '@angular/router';
import { Router } from '@angular/router';
import { Applicant } from '../class/applicant';
export class DetailComponent implements OnInit {
private id: string;
private applicantDoc: AngularFirestoreDocument<Applicant>;
applicant$: Observable<Applicant>;
constructor(
private route: ActivatedRoute,
private afs: AngularFirestore,
private router: Router
) {}
ngOnInit(): void {
this.id = `${this.route.snapshot.paramMap.get('id')}`;
this.applicantDoc = this.afs.doc<Applicant>(`applicants/${this.id}`);
this.applicant$ = this.applicantDoc.valueChanges();
}
형식에 데이터베이스 값을 설정합니다.<ng-container *ngIf="applicant$ | async as applicant">
<div class="mb-3">
<label class="form-label">名前</label>
<input type="text" [(ngModel)]="applicant.name" class="form-control" />
</div>
값을 표시할 수 있습니다.업데이트 처리의 실현
상세하게 보이는 구성 요소의 ts 측면에 업데이트를 추가하는 방법입니다.
updateApplicant(applicant: Applicant): void {
this.applicantDoc.update(applicant);
}
>측면 설정 버튼.<button routerLink="/list" class="btn btn-outline-secondary">戻る</button>
<button
(click)="updateApplicant(applicant)"
type="button"
class="btn btn-outline-info"
>
更新
</button>
업데이트를 눌러 Firestore 화면을 확인합니다.
업데이트가 완료되었습니다.
삭제 처리의 실현
ts 측면에서 삭제 방법을 설정합니다.
deleteApplicant(): void {
if (window.confirm('削除しますか?')) {
this.applicantDoc.delete().then(() => this.router.navigateByUrl('/list'));
}
}
삭제 버튼을 설정합니다.<button (click)="deleteApplicant()" class="btn btn-outline-warning ms-auto">
削除
</button>
삭제를 눌러 대화 상자를 표시합니다.삭제할 수 있습니다.
총결산
다음은 Anglar 응용 프로그램과 Firebase가 연합하여 데이터베이스에서 CRUD 처리를 하는 절차를 총괄하였다.
기본적인 처리지만 웹 응용 개발은 필수입니다. 참고할 수 있다면 좋겠습니다.
참고 자료
AnglarFire 공식 웹사이트>Collections in AngualFirestore
Reference
이 문제에 관하여(Anglar 애플리케이션과 Firebase를 함께 사용하여 Cloud Firestore 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/aono/articles/34aaf43579ca95텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)