LoginSignup
2
4

More than 3 years have passed since last update.

Firestoreにテストデータを作る(+注意点)

Last updated at Posted at 2019-09-20

やること自体は難しくない。
for等でループしてadd()かset()するだけ。

私は、docを指定したかったので、set()を利用しました。以下。

index.js
var admin = require("firebase-admin");
var serviceAccount = require("./serviceAccountKey.json");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://{project}.firebaseio.com"
});

var db = admin.firestore();

//memoly leakのwarningを出ないようにする。
require('events').EventEmitter.defaultMaxListeners = 0;

//ループ
for (let i = 1; i < 100; i++) {

    let i0 = ('0000000000' + i).slice(-10);

    db.collection('users').doc(i0).set({
        member_id: i0,
        name: "user" + i,
        email: "user" + i + "@test.com",
        age: Math.floor(Math.random() * 60) + 15, //15 ~ 74
        created_at: admin.firestore.FieldValue.serverTimestamp()
    });
    console.log("create:" + i0);
}

注意?点

set()処理自体は正しくされましたが、(最初)下記のようなエラーがでました。

MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 close listeners added. Use emitter.setMaxListeners() to increase limit

標準ではListenerの上限が10になってることから起こるようです。とりあえずWarningを消すには、下記のようにdefaultMaxListenersの数を適切に設定するといいようです。

require('events').EventEmitter.defaultMaxListeners = 0;

なお、0に設定すると無制限ということのようです。

fakerを使ってみる

ダミーデータといえばfaker。使ってみます。

npm install faker

書いてみる。いちおうlocalでjaが指定できるみたい。

ただ、jaにするとメアドとか超テキトーな感じになります。


....省略...

const faker = require('faker');
faker.locale = "ja";

for (let i = 1; i < 100; i++) {

    let i0 = ('0000000000' + i).slice(-10);

    db.collection('users').doc(i0).set({
        member_id: i0,
        name: faker.name.findName(),
        email: faker.internet.email(),
        age: Math.floor(Math.random() * 60) + 15,
        created_at: admin.firestore.FieldValue.serverTimestamp()
    });
    console.log("create:" + i0);
}

その他の使い方はこちらを見る。

2
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4