LoginSignup
1
2

More than 3 years have passed since last update.

【mongoose】mongoDBに大量のdataをSeedする【seedgoose】

Last updated at Posted at 2019-12-21

seedgooseについて

最近ポケモン関連のアプリを作成していて、ポケモン達の画像のurlをmongodbに保存しています。
なので、手軽に大量のデータをseedできるプラグインないかなーって探してたらこのプラグインを見つけて
簡単に実現できたので、備忘録として書きます。

設定より規約の思想で作られているため、多少注意点などありますのでそれも説明していきます。

git
seedgoose

執筆時点では星は9個しかついてないです。
ですが、かなりお手軽にできるのでおすすめです。

導入

npm i seedgoose

package.jsonにnpm scriptを追加します。
npm run seed でseedを流す事ができるようになります。

package.json
  "scripts": {
    "seed": "seedgoose seed"
  }

ディレクトリ構成

※必ず、以下のようにmongooseで定義したmodelの名前を複数形にしたjsonファイルをdataフォルダの配下に作成する必要があります。

─ data
  ├── pokemons.json 
pokemons.json
[
  {
    "_id": "11111111111",
    "pokedex" : "1",
    "imageUrl": "https://hogehoge.1.png",
    "name": ""
  },
  {
    "_id": "22222222222222",
    "pokedex": "865",
    "imageUrl": "https://hogehoge.865.png",
    "name": ""
  }
]
models/Pokemon.js
const mongoose = require("mongoose");

const Pokemon = mongoose.model(
  "Pokemon",
  new mongoose.Schema({
    name: {
      type: String
    },
    pokedex: {
      type: String
    },
    imageUrl: {
      type: String
    }
  })
);
module.exports = { Pokemon };

つづいて設定ファイルを作成します。
※必ずファイル名は.seedgooserc.jsとして下さい。

seedgooserc.js
require("dotenv").config({ path: ".env" });

module.exports = {
  modelBaseDirectory: "./models", 
  models: "*.js",
  data: "data",
  db: process.env.MONGO_URI 
};

seed実行

上記のファイルの作成が終わったら以下のコマンドでseedを実行します。

npm run seed

以下のように表示されていれば正常にデータが生成されています。

  create 11111111111 in pokemons

seedをやり直したい場合や、削除したい場合は、npm scriptに以下のように書けばいけるようです。

package.json
"scripts": {
  "seed": "seedgoose seed",
  "reseed": "seedgoose reseed",
  "unseed": "seedgoose unseed"
}

ここまで読んでくださりありがとうございます。
すごくシンプルで使いやすいプラグインだと思いますのでぜひ使ってみてください。

それでは!

1
2
0

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
1
2