![見出し画像](https://assets.st-note.com/production/uploads/images/131208685/rectangle_large_type_2_97277b5949b3a7b367668fda73bce0e1.png?width=1200)
Nest.js/Prismaの練習
前職はRuby, Rails, TypeScriptがメインで、今もその種のWeb Developerの仕事を探しているのですが、Rubyに関しては募集はあるのにもうSeniorしか雇ってないんじゃないかっていうくらい引っかかりません。
少し前からJS/TSをもう少し固めようと思って、練習?復習しています。
その中でNest.jsという割と新しめのframeworkを勉強し始めました。
Nest.js
Expressさえやったことなかったので、この前チラッとやってみましたけど、
Nest.jsの方がトントンと頭に入ってくるような、、、
Controllerはrouteのみで、中身は全部serviceに書かれます。
なんか色々pipeとかguardsとかあるんですけど、それぞれまだ少し何となくしか掴めていません。しっかりわかった時にまたnoteに書きたいです。
Prisma
PrismaというORMを取り入れていますが、私はとても使いやすいです。Railsをもっと極めてたらもっともっとわかりやすいのかな。
Prismaの好きなところは全部JavaScriptで、別に新しいこと覚えることがあまり少ないとこです。
Seeding
昨日はseedしてみたんですけど、そのままofficial docの例に習ったらすぐできましたしstraight forwardです。
fakerを使って普通にこんな感じでした。
// prisma/seed.ts
import { PrismaClient } from '@prisma/client';
import { faker } from '@faker-js/faker';
import * as argon from 'argon2';
const prisma = new PrismaClient();
async function main() {
const seedAmount = 50000;
for (let i = 0; i < seedAmount; i++) {
const password = await argon.hash(faker.internet.password());
await prisma.user.create({
data: {
email: faker.internet.email(),
password,
firstName: faker.person.firstName(),
lastName: faker.person.lastName(),
},
});
}
}
main()
.then(async () => {
await prisma.$disconnect();
})
.catch(async (e) => {
console.error(e);
await prisma.$disconnect();
process.exit(1);
})
.finally(() => {
prisma.$disconnect();
});
解決策が見つかっていない謎
これ他のデータもどんどんseedしたくなったらこのファイルばりデカくなると思うので、一旦分けてみたんですが、そうするとコマンドがききません。
scriptに書こうとすると、ファイルごとにscriptも増えるし、どれがいい解決策なんでしょうね。
調べたのはコマンドにfile名をパスする、という方法でした。(元気なくてやってません)
一部のデータだけseedしたい時みんなどうしてるんだろう。
今日は
火曜にJSのTechnical Interviewがあるので週末もお勉強です。LeetCodeぼちぼちやります。
キウイがいつもより少し早めに起こしてきて、ある意味ラッキーかな。
![](https://assets.st-note.com/img/1708188062229-hxr3gWmky8.jpg?width=1200)