From 200b25c563403d4b8da384bc9cb90ca122e715b3 Mon Sep 17 00:00:00 2001 From: JHIH-LEI Date: Sun, 15 Aug 2021 04:40:00 +0800 Subject: [PATCH] feat: modify seeder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改寫語法,並且從一位使用者變成兩位,這時也將類別資料獨立出來,到時再新增用戶時可以同時創建該用戶的預設類別 --- categories.json | 32 +++++++++++++++ models/seeds/categorySeeder.js | 47 +++++---------------- models/seeds/recordSeeder.js | 74 +++++++++++++++++++--------------- 3 files changed, 85 insertions(+), 68 deletions(-) create mode 100644 categories.json diff --git a/categories.json b/categories.json new file mode 100644 index 0000000..73bebf1 --- /dev/null +++ b/categories.json @@ -0,0 +1,32 @@ +[ + { + "name": "家居物業", + "icon": "fas fa-home", + "userId": null + }, + { + "name": "交通出行", + "icon": "fas fa-shuttle-van", + "userId": null + }, + { + "name": "休閒娛樂", + "icon": "fas fa-grin-beam", + "userId": null + }, + { + "name": "餐飲食品", + "icon": "fas fa-utensils", + "userId": null + }, + { + "name": "其他", + "icon": "fas fa-pen", + "userId": null + }, + { + "name": "薪水", + "type": "收入", + "userId": null + } +] \ No newline at end of file diff --git a/models/seeds/categorySeeder.js b/models/seeds/categorySeeder.js index eb9dbe2..d26653b 100644 --- a/models/seeds/categorySeeder.js +++ b/models/seeds/categorySeeder.js @@ -1,46 +1,21 @@ const db = require('../../config/mongoose') const Category = require('../category') const User = require('../user') +const categoryList = require('../../categories.json') db.once('open', () => { console.log('categorySeeder is connect!') return User.find() - .then(async user => { - const userId = user[0]._id - await Category.create( - { - name: '家居物業', - icon: 'fas fa-home', - userId - }, - { - name: '交通出行', - icon: 'fas fa-shuttle-van', - userId - }, - { - name: '休閒娛樂', - icon: 'fas fa-grin-beam', - userId - }, - { - name: '餐飲食品', - icon: 'fas fa-utensils', - userId - }, - { - name: '其他', - icon: 'fas fa-pen', - userId - }, - { - name: '薪水', - type: '收入', - userId + .then(users => { + Promise.all(Array.from(users, (user, i) => { + //為每個使用者新增類別 + const userId = user._id + categoryList.forEach(category => category.userId = userId) //將每個類別寫入自己的User id + return Category.create(categoryList) + })) + .then(() => { + console.log('done') + process.exit() }) }) - .then(() => { - console.log('done') - process.exit() - }) }) \ No newline at end of file diff --git a/models/seeds/recordSeeder.js b/models/seeds/recordSeeder.js index 56753c7..e7210c2 100644 --- a/models/seeds/recordSeeder.js +++ b/models/seeds/recordSeeder.js @@ -4,40 +4,50 @@ const User = require('../user') const bcrypt = require('bcryptjs') -db.once('open', async () => { +db.once('open', () => { console.log('recordSeeder is connect!') - const SEED_USER = { - name: 'Alpha Camp', - email: '123@gmail.com', - password: '123' - } - bcrypt - .genSalt(10) - .then(salt => bcrypt.hash(SEED_USER.password, salt)) - .then(hash => { - User.create({ - name: SEED_USER.name, - email: SEED_USER.email, - password: hash - }) - .then(async user => { - await Record.create({ - name: '神戶牛排', - category: '餐飲食品', - date: Date.now(), - amount: -2000, - userId: user._id - }, { - name: 'H1Z1', - category: '休閒娛樂', - date: Date.now(), - amount: -799, - userId: user._id - }) + const SEED_USERS = [ + { + name: 'Alpha Camp', + email: '123@gmail.com', + password: '123' + }, + { + name: 'Alicia', + email: 'abc@gmail.com', + password: '123' + } + ] + //迭代seed_user並且創建user及其record資料 + Promise.all(Array.from(SEED_USERS, (SEED_USER, index) => { + return bcrypt + .genSalt(10) + .then(salt => bcrypt.hash(SEED_USER.password, salt)) + .then(hash => { + return User.create({ + name: SEED_USER.name, + email: SEED_USER.email, + password: hash }) - .then(() => { - console.log('recordSeeder done!') - process.exit() + }) + .then(user => { + return Record.create({ + name: '神戶牛排', + category: '餐飲食品', + date: Date.now(), + amount: -2000, + userId: user._id + }, { + name: 'H1Z1', + category: '休閒娛樂', + date: Date.now(), + amount: -799, + userId: user._id }) + }) + })) + .then(() => { + console.log('recordSeeder done!') + process.exit() }) }) \ No newline at end of file