たいした話ではないけど、実装中にハマったのでメモ 📝 MiddlewareはInjectableのデコレータをつけて、 NestMiddlewareをimplementsして、useメソッドを実装すれば使える Injectしたい値は他のControllerなどと同じで、constructorで設定をしてあげれば良い // sample.middleware.ts @Injectable export class SampleMiddleware implements NestMiddleware { constructor(private readonly hogesService: Hogs…
ここ数年まともにサーバーサイドをやっていないなぁとかおもいつつなんやかんやあってNestJSを数日ほど触ったりドキュメントを読んだりしてたので初心を忘れないようにメモ。 いちおうTypeORMだけは出始めにちょっと使ってた。 理解度が高まったら気分が変わるかもしれないです。そしたらもっかい日記書きます。 てか全体的に難易度高くないこのフレームワーク?求められるリテラシー高くない? お気持ち表明 前提なんですが、僕はこのフレームワークのことをまだあまり好きになれていません。オブラートを外してのべると、すでに半分くらい嫌いです。
クライアント側で取得したGoogle reCAPTCHA トークンの検証をNest.jsでやろうと思ったら、無駄にハマったのでメモ tl;dr データをapplication/x-www-form-urlencodedで送れ 検証方法 公式のドキュメントで指定されているエンドポイントに対してPOSTでクライアントで取得したトークンとサーバーシークレットと一緒にリクエストする。 https://www.google.com/recaptcha/api/siteverify developers.google.com ここで注意したいのは、ドキュメントには記載されていないがapplication/…
はじめに NestJSでコントローラーを作っていくと同じ用なデコレーターを定義することが多くなっていくことがあります それをまとめてみました 日に日に増えていくデコレーター @Controller('users') @ApiTags('users') @ApiBearerAuth() @UseGuards(UserGuard) @UseInterceptors(ClassSerializerInterceptor) export class UserController { このControllerはGuardがついてて… とか一回立ち止まって考える時間が発生するのが嫌でした デコレーターをま…
nestjsで mongoDBを使う場合 "@nestjs/mongoose": "^7.0.4", "mongoose": "^5.10.1", "@types/mongoose": "^5.10.3", // --save-dev が妥当。 mongooseが最新だとエラー。
本記事では、NestJSをとTypeORMのインストール、および設定を行い コマンドを使ったUsersAPIを作成、及び設定方法を記載する。 NestJSインストール $ npm install -g @nestjs/cli プロジェクトの作成 $ nest new [アプリ名] TypeORM(Postgres) ライブラリのインストール $ npm install @nestjs/typeorm typeorm pg 設定 app.module.ts import { Module } from '@nestjs/common'; import { AppController } from…
gaeにデプロイされているNest.jsプロジェクトで、レスポンスをエッジサーバーにキャッシュさせたい。 tl;dr いい感じのHeader設定すればキャッシュできそう csurf使ってるとset-cookieが邪魔 interceptorでresponseのheaderからset-cookieヘッダーを削除 GAEでキャッシュを効かせるための方法 以下の記事を見るにCache-Controlヘッダーを設定してやればいいっぽい cloud.google.com qiita.com nestjsでの実現方法 Cache-Controlを設定するだけであれば@Headerデコレータを使えばできそう…
webhookのverificationでbodyParseされてないraw bodyが必要になって割と困ったのでメモ tl;dr 結局方法3で実装した ダメだったやり方 検索すると一番最初に以下のstack overflowが引っかかって、raw-bodyというnpmモジュールをインストールしてrawbodyを渡すデコレータ作って簡単にできるのかと思ったが、実際に動かしてみるとif(req.readable)が常にfalseになっていてうまく動作しなかった stackoverflow.com 方法1 別のstack overflowの質問*1で見つけたやり方 nest.jsが内部で設定してい…
nest.jsで開発をしていて、webhookを利用したい時に特定のパスだけcsurfチェックを外したい時に公式の説明とかだと「csrfのガードの前に特定のエンドポイントを設定する」方法しか書かれていなくてnestでは使えなかった。 そのため直接app.use(csurf())するのではなく、ひと手間加えることで特定のパスを例外処理することができた 以下issueで紹介されていた方法をTypeScriptで型付し、optionを設定できるようにしたものです import * as csurf from 'csurf' import {RequestHandler} from 'express'…
入社からちょうど1年。リードエンジニアとして活躍中の松木に、この1年間を振り返ってもらいました。楽しみながら成長するためのキーワードは、HRBrainが大事にしている「オーナーシップ」でした。 対極の環境に身を置いてチャレンジしたい ベンチャーへの転職を考え始めたのは、2019年の秋ごろ。当時はわりと大きな会社で社内向けのプロダクトの開発に携わっていたのですが、もっと手触り感が欲しくなってきたんです。 まずは自社開発をしていることを絶対条件に、顧客のための開発をしている企業や、技術的な発信に積極的な企業を探して、10社ほどカジュアル面談に行きました。 HRBrainには、Go言語など技術面での…
TypeScript の陥りやすい罠 Oreilly の Effective Typescript を読んだ。説明が簡潔でわかりやすく、章の構成も読みたいところだけ読めば良いようになっており、すらすら読める。対象読者層はある程度 TypeScript を使っており、ひと通りの機能を触ったことがある人だと思う。全くの初心者はまず Handbookを一通り眺めてみることをおすすめする。本書籍はTypeScript本の一冊目として手に取るものではない。 2 年くらい TypeScript を使っているが意外と詳しく知らない動作やうろ覚えだった機能についても書かれており、参考になった。Conditio…
JS only baseの開発環境は聞き慣れないので、少し調べてみたメモ(Φω| ■重要キーワード Next.jsもNest.jsもフレームワーク。 - NextJSはReactベースでTypeScriptでフロントエンド開発を実現 - NestJSはTypeScriptでバックエンド開発を実現 [参考サイト] techblog.yahoo.co.jp nju33.com nextjs-ja-translation-docs.vercel.app 選ばれたのは Next.jsでした - Next.jsによるServer Side OGP ⽣成 / Next.js was chosen - Se…
こんにちは。フロントエンドエンジニアの藤澤(@f_a24_)です。 本稿では、今とても勢いのあるプログラミング言語TypeScriptについて紹介したいと思います。 TypeScriptとは? TypeScriptはMicrosoft製のAltJS(JavaScriptに変換される言語)で、一言で言うと型のあるJavaScriptです。 Googleの社内標準言語になっていたり、直近1年で最も使われているプログラミング言語第4位になっていたりと 特にWebフロントエンド界隈を中心にデファクトスタンダード化しており、多くのプロダクトやライブラリにTypeScriptが使用されています。 【直近1…
最近、GraphQLを勉強するために「初めてのGraphQL」という本を読んで、理解のために自分でも本の中で実装されているサンプルアプリを作ってみました。 初めてのGraphQL ―Webサービスを作って学ぶ新世代API作者:Eve Porcello,Alex Banks発売日: 2019/11/13メディア: 単行本(ソフトカバー) 作ったのがこれ: https://github.com/danimal141/learning-graphql-ts ただ写経するだけだとしっかり理解できない + 面白くないので本は雑に読みつつ、色々と魔改造しながら作ったのでそのメモを残しておきます。 全体 本…
年末なので issue https://github.com/issues?q=is%3Aissue+author%3Aodanado+archived%3Afalse+-user%3Aodanado+-user%3Aodan-sandbox を眺める Can't lint .ts files when use vue-eslint-parser · Issue #864 · microsoft/vscode-eslint vscode-eslint の v2 がリリースされた次の日に発生した不具合を報告した issue vue-eslint-parser を使っていると .ts ファイルが …
ツイート Kensuke Takeda @takeken1_ Nodistをアンインストールしただけ。 #はてなブログ 【作業ログ】Nodist をアンインストールした記事を読みながらアンインストールした (Windows) - 愛と幻想のアジャイル https://takeken1.hatenablog.com/entry/2020/12/16/222127 22:22 Kensuke Takeda @takeken1_ この記事でNodistを消すことにした。 / “2020 年ではもう使えない Nodist はアンインストールする (Windows)” https://b.hatena.…
ツイート Kensuke Takeda @takeken1_ “Next.js + NestJS + GraphQLで変化に追従するフロントエンドへ 〜 ショッピングクーポンの事例紹介 - Yahoo! JAPAN Tech Blog” https://b.hatena.ne.jp/-/redirect?code=77502f725e506b325e213f344d202f437721397d77214f59&location_id=4695656282682372578&signature=278614b710ca9eae9910e463c478994e0f1b42a3e2de8a4d2a7…
こんにちは! あしたのチームでフロントエンドリードをしております塩野です! みなさんは快適なフロントエンド生活を送っていらっしゃいますか? もちろん私も package.json を見るとワクワクが止まらないので毎日GitHubのリポジトリを漁っては dependencies と devDependencies をにらめっこしちゃいます。 今回はフロントエンド開発でよく使うであろうnpmライブラリ、そしてここさえおさえておけば間違いはないだろうというnpmライブラリをずらりと並べてみたので、是非今日のおつまみにしていただければと思います。 筆者について TypeScript大好き(バックエンド…