Jump to content

Openai/68f4726a-8c80-8009-9231-f5453eebb535

From freem


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]

  1. "NestJS ダミーデータ生成". ChatGPT. Retrieved 2026-01-07.