firestore 데이터 베이스는 mongoDB보다 더 간단하면서도 출시된지 얼마 안된 시스템이라 제한점이 많았다. 특히 firestore에 관한 한국 자료가 많지 않아 불편하였다. firesbase 자체가 웹뿐만 아니라 안드로이드도 지원하여 웹개발에 대한 자료가 그렇게 친절하지는 않았다. 물론 이런 부족한 점은 구글에 영어 검색을 통해 해결한다. 이번 포스팅에서 정리한 것은 firestore number 필드의 값을 증가 혹은 감소시키는 것이다.
| const admin = require('firebase-admin');const functions = require('firebase-functions'); admin.initializeApp(functions.config().firebase); let db = admin.firestore(); | cs |
먼저 이런 식으로 admin 함수의 증명 과정을 통해 firebase에 연결해준다. 이 후 admin.firestore()을 통해 실제 firestore 데이터베이스와 연결한다.
| const increment = admin.firestore.FieldValue.increment(1); let popIncrement = db.collection('infor').doc(brdList).update({ brdCount:increment }); | cs |
firestore에서는 생성할 수 있는 필드 타입 종류가 많다. 그 중 number 타입은 일반적으로 생각하는 정수 혹은 실수를 저장하는 타입이다. 그런데 이 값들을 숫자로서 받아들이는데에는 많은 어려움이 있다. 데이터를 수정할때나 변환할 떄 number 타입을 string으로 변환후 int로 변환하여 진행하였다.
외국 포럼을 찾아본 결과 firestore에서는 값을 변경할 수 있는 메소드를 제공하고 있다. 위와 같은 형태로 값 증가 함수를 변수에 대입해준 뒤에 update를 통해 데이터를 수정하면 된다.
| let admin = require('firebase-admin'); // ... let washingtonRef = db.collection('cities').doc('DC'); // Atomically increment the population of the city by 50. let popIncrement = washingtonRef.update({ population: admin.firestore.FieldValue.increment(50) }); | cs |
실제 firebase doc에 있는 예제 코드이다. increment에 넘겨주는 매개변수는 1뿐만 아니라 실수,정수 모두 가능하다 해당 값만큼 증가 혹은 감소 시킨다. increment를 decrement로 바꿔주면 감소 함수가 된다.