Openai/68f4726a-8c80-8009-9231-f5453eebb535
This conversation was exported from ChatGPT[1]
gpt-5[edit | edit source]
User: nestjsにrailsでいうfaker::loremみたいなダミーデータ作成するnpmとかないの?[edit | edit source]
nestjsにrailsでいうfaker::loremみたいなダミーデータ作成するnpmとかないの?
Assistant: あるよ!NestJS(というかNode.js環境全般)でも Rails の Faker に相当するダミーデータ生成ライブラリ がいくつかある👍[edit | edit source]
あるよ!NestJS(というかNode.js環境全般)でも Rails の Faker に相当するダミーデータ生成ライブラリ がいくつかある👍 代表的なのをいくつか紹介するね。
###[edit | edit source]
npm install @faker-js/faker
使い方例👇
import { faker } from '@faker-js/faker';
const user = {
name: faker.person.fullName(),
email: faker.internet.email(),
password: faker.internet.password(),
introduction: faker.lorem.sentence(),
};
- faker.lorem.words() や faker.lorem.paragraph() などもある
- faker.internet.email() なども Rails の Faker::Internet.email にそっくり
- 日本語ロケールも対応してる 🇯🇵 ``
ts import { fakerJA } from '@faker-js/faker'; fakerJA.person.fullName(); // 日本語名bash===== : =====
npm install chance
ts
import Chance from 'chance';
const chance = new Chance();
const user = {
name: chance.name(),
email: chance.email(),
bio: chance.sentence(),
};
===== : =====
bash
npm install casual
ts
import casual from 'casual';
const user = {
name: casual.full_name,
email: casual.email,
description: casual.text,
};
==== テストやシードデータ生成でよく使う: ====
ts
// src/seeds/user.seed.ts
import { faker } from '@faker-js/faker';
import { User } from '../users/user.entity';
export function createUserSeed(): User {
const user = new User();
user.name = faker.person.fullName();
user.email = faker.internet.email();
user.password = faker.internet.password();
user.introduction = faker.lorem.sentence();
return user;
}
DB Seeder で使う場合は nestjs-seeder と組み合わせるとより便利👇
bash
npm install nestjs-seeder @faker-js/faker
``
| | | |[edit | edit source]
| --- | --- | --- | | | | | | | | | | | | | | | | |
もし「Seeder としてまとめて NestJS CLI 経由で実行したい」みたいな構成を考えてるなら、 nestjs-seeder の使い方も一緒に紹介しようか?
User: password: faker.internet.password,[edit | edit source]
password: faker.internet.password(), って書いたらconfirmPasswordはどう書けばいいの?
Assistant: めっちゃ良い質問!👏[edit | edit source]
めっちゃ良い質問!👏
faker.internet.password() は毎回ランダム文字列を返すから、 単純に2回呼ぶと password と confirmPassword が一致しない んよね。
Rails の Faker でも同じ問題があるけど、Node.js でも簡単に解決できるよ。
✅ シンプルな解決方法[edit | edit source]
1回だけ password を生成して、変数に保持しておく。
import { faker } from '@faker-js/faker';
const password = faker.internet.password();
const user = {
name: faker.person.fullName(),
email: faker.internet.email(),
password, // 生成した値を使う
confirmPassword: password, // 同じ値を再利用!
introduction: faker.lorem.sentence(),
};
これで両方一致する👍
💡もう少し工夫するパターン(関数化)[edit | edit source]
テストやシードで複数ユーザー作るときは、 関数にしておくと扱いやすい。
function createFakeUser() {
const password = faker.internet.password();
return {
name: faker.person.fullName(),
email: faker.internet.email(),
password,
confirmPassword: password,
introduction: faker.lorem.sentence(),
};
}
const user = createFakeUser();
🌱もし Jest テストで使うなら[edit | edit source]
たとえば SignupDto のモックを作るならこう 👇
import { faker } from '@faker-js/faker';
import { SignupDto } from '../auth/dto/signup.dto';
export const mockSignupDto = (): SignupDto => {
const password = faker.internet.password();
return {
name: faker.person.fullName(),
email: faker.internet.email(),
password,
confirmPassword: password,
imageId: faker.string.uuid(),
introduction: faker.lorem.sentence(),
};
};
要は 「faker で1回だけ生成 → 変数に保持 → confirmPassword にも使う」 これが正解やね✨
User: UUIDは?[edit | edit source]
UUIDは?
Assistant: ナイス 👏 そこも気になるよね。[edit | edit source]
ナイス 👏 そこも気になるよね。 UUID(ユニークID)も faker でしっかり生成できるよ!
✅ faker で UUID を生成する方法[edit | edit source]
import { faker } from '@faker-js/faker';
const id = faker.string.uuid();
console.log(id);
// 例: '5d78f017-ef80-fbbf-3aad-f3f5d6c10043'
Rails の SecureRandom.uuid とほぼ同じ感じだね。
💡実際のダミーオブジェクト例[edit | edit source]
import { faker } from '@faker-js/faker';
const password = faker.internet.password();
const user = {
id: faker.string.uuid(),
name: faker.person.fullName(),
email: faker.internet.email(),
password,
confirmPassword: password,
imageId: faker.string.uuid(), // 画像IDとかにも使える
introduction: faker.lorem.sentence(),
};
🧩 もし TypeORM のエンティティ用シードに使うなら[edit | edit source]
UUID カラムに割り当てるなら、そのまま文字列を代入してOK:
import { faker } from '@faker-js/faker';
import { User } from '../users/user.entity';
export function createUserSeed(): User {
const user = new User();
const password = faker.internet.password();
user.id = faker.string.uuid();
user.name = faker.person.fullName();
user.email = faker.internet.email();
user.password = password;
user.confirmPassword = password;
user.imageId = faker.string.uuid();
user.introduction = faker.lorem.sentence();
return user;
}
📝 まとめ[edit | edit source]
| 目的 | faker の使い方 | | ------------------- | ---------------------------------------------------------------------- | | ランダムUUID | faker.string.uuid() | | ランダムパスワード | faker.internet.password() | | 一致するconfirmPassword | const password = faker.internet.password(); confirmPassword = password | | 日本語の名前 | fakerJA.person.fullName() |
もし「UUIDをv4で統一したい」とか「NestJSでエンティティ側で自動生成したい」場合のやり方も説明できるけど、そっちも気になる?
References[edit | edit source]
- ↑ "NestJS ダミーデータ生成". ChatGPT. Retrieved 2026-01-07.