项目作者: RolandBanguiran

项目描述 :
Google Cloud Firestore API Wrapper Class for Node.JS
高级语言: TypeScript
项目地址: git://github.com/RolandBanguiran/node-firestore-wrapper.git
创建时间: 2018-07-12T13:48:17Z
项目社区:https://github.com/RolandBanguiran/node-firestore-wrapper

开源协议:MIT License

下载


Node Firestore Wrapper

Google Cloud Firestore API Wrapper Class for Node.JS

Sample Usage

  1. import { FirestoreRepository } from './FirebaseRepository';
  2. // Create user repository object from instantiating FirestoreRepository class
  3. const userRepository = new FirestoreRepository();
  4. userRepository.setCollection('users');
  5. // Get all users
  6. userRepository.get().then(users => {
  7. console.log(users);
  8. });

Available Methods: get(), getById(), add(), update(), delete()

Getting Started

Please follow below steps to setup this project in your local machine.

1. Clone

  • Clone from Github repository
  1. git clone https://github.com/RolandBanguiran/node-firestore-wrapper.git

2. Install

  • Select project folder
  • Install project dependencies
  1. cd node-firestore-wrapper
  2. npm install

3. Add your private key

  • Add serviceAccountKey.json file to your project root folder
  • Paste your generated private key configuration like below
    1. {
    2. "type": "service_account",
    3. "project_id": "node-firestore-repository",
    4. "private_key_id": "",
    5. "private_key": "",
    6. "client_email": "firebase-adminsdk-m693l@node-firestore-repository.iam.gserviceaccount.com",
    7. "client_id": "",
    8. "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    9. "token_uri": "https://accounts.google.com/o/oauth2/token",
    10. "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    11. "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-m693l%40node-firestore-repository.iam.gserviceaccount.com"
    12. }

4. Build and Run

  1. npm run-script start

API Reference

setCollection(collectionName: string): void

Set collection name.

Parameters:

  • collectionName The collection name

get(conditions: Array<Condition> = null, orderBy: Array<OrderBy> = null, limit: number = null): Promise<Document[]>

Get documents in a collection.

Parameters:

  • conditions Array of conditions
  • orderBy Field name to order by
  • limit Number of documents to retrieve

Returns:

  • Array of Document objects

Sample Code:

  1. // Get all users
  2. userRepository.get().then(users => {
  3. console.log("All users:", users);
  4. });
  5. // Get all male users
  6. const condition: Condition = {
  7. field: 'gender',
  8. operator: Operators.Equal,
  9. value: 'male'
  10. };
  11. userRepository.get([condition]).then(users => {
  12. console.log("All male users:", users);
  13. });
  14. // Get first male user order by name (need to create an index)
  15. const condition2: Condition = {
  16. field: 'gender',
  17. operator: Operators.Equal,
  18. value: 'male'
  19. };
  20. const orderBy: OrderBy = {
  21. field: 'name',
  22. sort: SortType.Ascending
  23. };
  24. userRepository.get([condition2], [orderBy], 1).then(user => {
  25. console.log("First male user:", user);
  26. });

getById(id: string): Promise<Document>

Get a document by ID

Parameters:

  • id The document ID

Returns:

  • A Document object or null

Sample Code:

  1. userRepository.get('helloworld123').then(user => {
  2. console.log("User:", user);
  3. });

add(data: Object, id: string = null): Promise<ResultData>

Add a document.

Parameters:

  • data A document object
  • id The document ID

Returns:

  • ResultData object or null

Sample Code:

  1. // Add a user with auto-generated ID
  2. const user: Object = {
  3. name: 'Kat',
  4. email: 'kat@email.com',
  5. gender: 'female'
  6. };
  7. userRepository.add(user).then(result => {
  8. console.log("Add Result (auto-generated ID):", result);
  9. });
  10. // Add a user with custom ID
  11. const user2: Object = {
  12. name: 'Gary',
  13. email: 'gary@email.com',
  14. gender: 'male'
  15. };
  16. userRepository.add(user2, 'helloworld123').then(result => {
  17. console.log("Add Result (custom ID):", result);
  18. });

update(data: Object, id: string, isMerge: boolean = false): Promise<ResultData>

Update a document.

Parameters:

  • data The document object
  • id The document ID
  • isMerge If true, data will merge into existing document. Default is false.

Returns:

  • ResultData object or null

Sample Code:

  1. // Update a user
  2. const user3: Object = {
  3. name: 'Peter',
  4. email: 'peter@email.com',
  5. gender: 'male'
  6. };
  7. userRepository.update(user3, 'helloworld123').then(result => {
  8. console.log("Updated Result:", result);
  9. });
  10. // Update user email only
  11. const user4: Object = {
  12. email: 'peter_updated@email.com'
  13. };
  14. userRepository.update(user4, 'helloworld123', true).then(result => {
  15. console.log("Updated Result:", result);
  16. });

delete(id: string): Promise<ResultData>

Delete a document

Parameters:

  • id The document ID

Returns:

  • ResultData object or null

Sample Code:

  1. // Delete a user by ID
  2. userRepository.delete('helloworld123').then(result => {
  3. console.log("Delete Result:", result);
  4. });