All Projects → uphy → firestore-seed

uphy / firestore-seed

Licence: other
Seed data library for Cloud Firestore.

Programming Languages

typescript
32286 projects
shell
77523 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to firestore-seed

stor
[DEPRECATED] STOR provides a JSON database with the power of HTTP requests 🚀
Stars: ✭ 18 (-18.18%)
Mutual labels:  firestore
Minemap
An efficient map viewer for Minecraft seed in a nice GUI with utilities without ever needing to install Minecraft.
Stars: ✭ 104 (+372.73%)
Mutual labels:  seed
firestore-jest-mock
Jest Helper library for mocking Cloud Firestore
Stars: ✭ 128 (+481.82%)
Mutual labels:  firestore
waylan android
A dictionary concept for Android ~ Making words and their meanings available through a natural and beautiful experience
Stars: ✭ 13 (-40.91%)
Mutual labels:  firestore
barber-shop
Vue + Firebase (cloud functions, auth, firestore, hosting) reservations system
Stars: ✭ 47 (+113.64%)
Mutual labels:  firestore
ionic4-ngrx-firebase
A basic application for Ionic 4 with firebase & ngrx actions, reducers and effects
Stars: ✭ 17 (-22.73%)
Mutual labels:  firestore
stuff
Crud operation with Firebase
Stars: ✭ 80 (+263.64%)
Mutual labels:  firestore
Angular-Gulp-Boilerplate
Clean but full-featured AngularJS boilerplate using Gulp workflow and best practices
Stars: ✭ 30 (+36.36%)
Mutual labels:  seed
crisis-news-mapper
日本の災害関連ニュースをTwitterから収集して地図上にマッピングするFirebaseプロジェクト crisis.yuiseki.net
Stars: ✭ 13 (-40.91%)
Mutual labels:  firestore
FirestoreMovies
Simple Movie application showcasing use of Firestore document based database.
Stars: ✭ 28 (+27.27%)
Mutual labels:  firestore
image-upload-app
A simple image upload application using React and Node, which explores multiple ways to upload an image including using multer as a middleware, a CDN system and converting an image to a string and storing it.
Stars: ✭ 35 (+59.09%)
Mutual labels:  firestore
cannercms
⚡️[NOT MAINTAINED] Content Management Framework creates custom CMS fast and easy. Support data sources such as Firebase/Firestore, GraphQL and Restful APIs.
Stars: ✭ 2,452 (+11045.45%)
Mutual labels:  firestore
likecoin-tx-poll
Firestore based service of polling eth status and resending tx
Stars: ✭ 13 (-40.91%)
Mutual labels:  firestore
cosmic
🌱🌌 Seed for a universal (native iOS, native Android, web, desktop) app based on react native web, redux and Typescript
Stars: ✭ 32 (+45.45%)
Mutual labels:  seed
apollo-datasource-firestore
An Apollo DataSource for Firestore
Stars: ✭ 28 (+27.27%)
Mutual labels:  firestore
firebase-youtube-clone
技術書典5に出典した「Firebaseによるサーバーレスシングルページアプリケーション」のリポジトリです。
Stars: ✭ 16 (-27.27%)
Mutual labels:  firestore
loopback-connector-firestore
Firebase Firestore connector for the LoopBack framework.
Stars: ✭ 32 (+45.45%)
Mutual labels:  firestore
voting system app
E-voting system based on blockchain technology, with ethereum, flutter/dart
Stars: ✭ 59 (+168.18%)
Mutual labels:  firestore
firestore-social-backend
The backend code of firestore client for React Social Network
Stars: ✭ 36 (+63.64%)
Mutual labels:  firestore
open-feedback
Open Feedback is an opened SaaS platform destined to organisers to gather feedback from users. OpenFeedback
Stars: ✭ 67 (+204.55%)
Mutual labels:  firestore

firestore-seed

firestore-seed insert initial seed data to Cloud Firestore.

Not tested at all. Use this at your own lisk.

Getting started

Add firestore-seed to your project.

$ yarn add firestore-seed

Create a simple seed program.

const admin = require("firebase-admin");
// serviceAccountKey.json can be generated in Firebase Console.
const serviceAccountKey = require("./serviceAccountKey.json");
const seed = require('firestore-seed');

// Initialize firebase-admin.
admin.initializeApp({
    credential: admin.credential.cert(serviceAccountKey),
    databaseURL: "https://xxxxxx.firebaseio.com",
    storageBucket: "xxxxxx.appspot.com",
});

// Import seeds.
let messagesCollection = seed.collection("messages", [
    seed.doc("message1", {
        content: "Hello firestore-seed.",
        created: new Date(),
    }),
    seed.doc("message2", {
        content: "Good bye firestore-seed.",
        created: new Date(),
    })
]);

messagesCollection.importDocuments(admin).then(() => {
    console.log("Successfully imported documents.");
}).catch(e => {
    console.log("Failed to import documents: " + e);
});

Uploading files

You can also upload files to the Firebase Cloud Storage and add the download URL to the Firestore documents.

const admin = require("firebase-admin");
// serviceAccountKey.json can be generated in Firebase Console.
const serviceAccountKey = require("./serviceAccountKey.json");
const seed = require('firestore-seed');

// Initialize firebase-admin
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://xxxxxx.firebaseio.com",
    storageBucket: "xxxxxx.appspot.com",
});

// Import seeds.
let imageOptions = seed.imageOptions("images/{id}", "public/profiles/{id}")
let profilesCollection = seed.collection("profiles", [
    seed.doc("uphy", {
        name: "foo",
        introduction: "Hello, I'm foo.",
        created: new Date(),
        // Upload 'images/uphy/image.png' to 'public/profiles/uphy/image.png' and set its' download URL to this field.
        icon: seed.image("image.png", "image.png", imageOptions)
    }),
    seed.doc("yhpu", {
        name: "bar",
        introduction: "Hello, I'm bar.",
        content: "Good bye firestore-seed.",
        created: new Date(),
        // Upload 'images/yhpu/image.png' to 'public/profiles/yhpu/image.png' and set its' download URL to this field.
        icon: seed.image("image.png", "image.png", imageOptions)
    })
]);

profilesCollection.importDocuments(admin).then(() => {
    console.log("Successfully imported documents.");
}).catch(e => {
    console.log("Failed to import documents: " + e);
});

Subcollections

For inserting subcollections, use seed.subcollection(docs).

const admin = require("firebase-admin");
// serviceAccountKey.json can be generated in Firebase Console.
const serviceAccountKey = require("./serviceAccountKey.json");
const seed = require('firestore-seed');

// Initialize firebase-admin
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://xxxxxx.firebaseio.com",
    storageBucket: "xxxxxx.appspot.com",
});

// Import seeds.
seed.importCollections(admin,
    [
        seed.collection("users", [
            seed.doc("uphy", {
                name: 'Yuhi Ishikura',
                rooms: seed.subcollection([
                    seed.doc("room1", {
                        "ref": seed.docRef("rooms", "room1")
                    }),
                    seed.doc("room2", {
                        "ref": seed.docRef("rooms", "room2")
                    })
                ])
            }),
            seed.doc("suzuki", {
                name: 'Taro Suzuki',
                rooms: seed.subcollection([
                    seed.doc("room1", {
                        "ref": seed.docRef("rooms", "room1")
                    }),
                    seed.doc("room2", {
                        "ref": seed.docRef("rooms", "room2")
                    })
                ]),
            }),
            seed.doc("tanaka", {
                name: 'Tanaka Jiro',
                rooms: seed.subcollection([
                    seed.doc("room2", {
                        "ref": seed.docRef("rooms", "room2")
                    })
                ]),
            })
        ]),
        seed.collection("rooms", [
            seed.doc("room1", {
                name: "Room 1",
                messages: seed.subcollection([
                    seed.doc("message1", {
                        time: Date.now(),
                        content: "Message 1 of room1",
                        user: seed.docRef("users", "uphy")
                    }),
                    seed.doc("message2", {
                        time: Date.now(),
                        content: "Message 2 of room1",
                        user: seed.docRef("users", "suzuki")
                    })
                ])
            }),
            seed.doc("room2", {
                name: "Room 2",
                messages: seed.subcollection([
                    seed.doc("message1", {
                        time: Date.now(),
                        content: "Message 1 of room2",
                        user: seed.docRef("users", "uphy")
                    }),
                    seed.doc("message2", {
                        time: Date.now(),
                        content: "Message 2 of room2",
                        user: seed.docRef("users", "suzuki")
                    }),
                    seed.doc("message3", {
                        time: Date.now(),
                        content: "Message 3 of room2",
                        user: seed.docRef("users", "tanaka")
                    })
                ])
            })
        ])
    ]
).then(() => {
    console.log("Successfully imported documents.");
}).catch(e => {
    console.log("Failed to import documents: " + e);
});

Predefined script

You can use firestore-seed more simply with npm scripts.

  1. yarn add -D firestore-seed
  2. Create seed file
    const seed = require('firestore-seed');
    
    // Export collection or collection array.
    module.exports = seed.collection("messages", [
        seed.doc("message1", {
            content: "Hello firestore-seed.",
            created: new Date(),
        }),
        seed.doc("message2", {
            content: "Good bye firestore-seed.",
            created: new Date(),
        })
    ]);
  3. Add following properties to your package.json
    "scripts": {
        "seed": "firestore-seed",
        /* ... */
    },
    /* ... */
    "firestore-seed": {
        /* Firestore database URL(required) */
        "databaseURL": "https://xxxxxxx.firebaseio.com",
        /* Firebase service account key file. */
        "credentialPath": "./firebase-credential.json",
        /* Firestore seed file created in #2 */
        "seedDataPath": "./firestore-seed.js"
    }
  4. Run yarn seed
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].