[フレーム]
1 - 24 件 / 24件
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
このようにさまざまなデコレータが用意されていますが、今回はサンプルで利用するデコレータに絞って説明します。他のデコレータについては、NestJSの公式ドキュメントなどを参照してください。 依存性注入(DI) 依存性注入(DI、Dependency Injection)とは、クラスの依存関係を解決する仕組みです。NestJSでは、依存性注入を使ってクラスの依存関係を解決します。 クラスの依存関係とは、クラスが他のクラスに依存している関係のことです。例えば、次のようなクラスAがあったとします。このクラスは他のクラスに依存していません。@Injectable()デコレータを使って、サービスを定義します。 @Injectable() class A { constructor() {} } そして、次のようなクラスBがあったとします。このクラスは、@Inject()デコレータを使って依存性を注入し
TL;DR TypeORMで発生していたスロークエリを改善 スロークエリを改善したらECSの負荷も減少 はじめに スロークエリを改善したら、ECSコンテナ側の負荷も下がってなんでだろ?と思ったので記事にしようと思います。 環境 TypeORM v0.3.20 Node.js v18.x バックエンドインフラ ECS on Fargate => Amazon Aurora MySQL 負荷改善の前と後 まずはどのくらい改善したのかを示します。 この時ECSコンテナ8台動いてました。(4vCPU 8GBMem) 改善前 改善後 改善前と改善後は一日前の同じ時間帯のものです。 ちゃんと動いてるのか不安になるくらい下がってました笑 どのような対応をしたのか スロークエリの出ていたクエリでMySQLの実行計画を確認しました。 TypeALL,index, Using Filesort等はなかったので
DEV Community Follow A space to discuss and keep up software development and manage your software career
ロマン構成が動いたので紹介します。 コード: https://github.com/mizchi/absurd-sql-example-with-typeorm デモ: https://heuristic-perlman-94f8f4.netlify.app tldr Steam の某クリッカーゲームをやってたら放置ゲーでも作りたい気分になってきた。 複雑なデータを管理するならブラウザ内に本物の sqlite を持ってきたい sqlite は持ってこれたけど TS の中で 生 SQL 書くのがだるかった(補完支援がない)ので ORM でラップしたい Typeorm + absurd-sql の構成を試したら色々大変だったけど動いた つまりブラウザでこのコードが動く。 // ... @Entity() class User { @PrimaryGeneratedColumn() id: nu
私は以前 TypeORM という node.js の ORM を推していましたが、 Decorator の仕様が未だ安定しないこと、 TypeScript の legacy な実装に依存している点が難点でした。そんな中、 Next.js ベースのフルスタックフレームワークである blitz が Prisma2 を採用したこともあり注目を集めているため、 TypeORM と比較して紹介します。
TypeORM には CLI が用意されており、typeorm init コマンドを用いて新規プロジェクトをサクッと作ることができます。 https://typeorm.io/using-cli その typeorm init のオプションで --docker を渡すことで docker-compose.yml ファイルも生成してくれます。 簡単ですね。やってみましょう。 やってみた npx typeorm init --name my-project --docker 上記のコマンドを実行すれば、my-project というディレクトリが作成され、TypeORM を動かすのに必要なソースコード一式や docker-compose.yml が生成されます。 今回はオプションでデータベースを指定していないので、デフォルトの PostgreSQL が使われます。 また上記のコマンドで以下の内容
【NestJS 本格入門】API の作成からテストの作成・自動化までを網羅(TypeORM & JEST & GitHub Actions) NestJS とは Node.js 上で動作する バックエンドフレームワーク です。 NestJS を採用することで「TypeScript を完全にサポートしており、型をつけることができる」、「テストフレームワークが標準で用意されている」といった大きなメリットを享受することができます。 本書籍では、そんな NestJS に本格入門するため、基本的な CRUD 処理を行う API の作成から、単体テスト・E2E テストをしっかりと書いていきます。 一緒に NestJS を学んでいきましょう。
Node.jsの普及によって、JavaScript/TypeScriptはフロントエンドだけの実装言語ではなくなりました。 Express等のWebサーバーや、Lambda等のサーバーレス環境でバックエンド処理として使われることが当たり前になりました。 最近はもっとバリエーションが増えていますが、一般的にバックエンドサービスだとRDBアクセスが定番モノと言えます。 ここでは、そんなJavaScript/TypeScript向けのORマッパーのTypeORMをご紹介します。 TypeORMはフルスタックのORマッパーで、特に実装言語としてTypeScriptを利用すると、その型付け機能をフル活用できます[1]。 もちろん、PostgreSQL、MySQL、Oracle、SQL Server等のメジャーなRDBはフルサポートされています。 また、実験的(experimental)ではありますが
こんにちは、ダイニーで業務委託としてソフトウェアエンジニアをしている @odan3240 です。 業務委託として開発体験の向上に繋がるタスクを担当しており、今回は odavid/typeorm-transactional-cls-hooked をプロダクトに導入した話を紹介します。 TypeORM と TypeORM でのトランザクションの扱い方TypeORM は Node.js 向けの ORM です。ダイニーは RDB に PostgreSQL を採用しており、OR マッパーに TypeORM を使用しています。 この TypeORM では RDB のトランザクションを扱うことができるため、複数の SQL の実行をアトミックな操作にすることができます。 トランザクションの使用方法は transaction 関数の第一引数のコールバック関数の引数に、トランザクション用の EntityMa
DEV Community Follow A space to discuss and keep up software development and manage your software career
Photo by Tobias Fischer on UnsplashWorking with databases is an unavoidable part of being a backend developer. In particular, the server-side JavaScript ecosystem offers an endless number of libraries that aim to make this task less painful. Some of the most popular include: Sequelize (an object-relational mapper, or ORM, library)pg/mysql (JavaScript clients for interfacing with a specific databas
やったこと ほぼTypeScriptだけでバックエンドもフロントエンドも作ってみた できたもの 技術スタック Backend NestJS TypeORM GraphQL (Code first) / Apollo Frontend Next.js / React GraphQL Code Generator / Apollo Client emotion / Semantic UI Other yarn workspace ESLint / Prettier / husky Docker / Docker Compose Vercel GCP (CloudSQL / Cloud Run / Cloud Build) Backend NestJS TypeScriptでスケーラブルなサーバーサイドアプリを構築するためのNode.jsフレームワークです 型安全なので何か誤った記述があれば起動
CX事業本部@大阪の岩田です。 現在自分が関わっているシステムではフレームワークにNestJSを、ORMにはTypeORMを採用しています。DBはAuroraのMySQL互換を利用しており、Auroraのリードレプリカを有効活用できるようTypeORMのデータソースでReplicationを指定しています。データソースの指定は以下のようなイメージです。 { type: 'mysql', replication: { master: { host: 'Auroraのクラスターエンドポイント', ...略 }, slaves: [ { host: 'Auroraのリーダーエンドポイント', ...略 }, ], }, } 先日気づいたのですが、上記のように TypeORMのドライバがmysql replicationを指定している という構成だと、replicationで指定したDBとの接続が
This page compares Prisma ORM and TypeORM. If you want to learn how to migrate from TypeORM to Prisma ORM, check out this guide. TypeORM vs Prisma ORM While Prisma ORM and TypeORM solve similar problems, they work in very different ways. TypeORM is a traditional ORM which maps tables to model classes. These model classes can be used to generate SQL migrations. Instances of the model classes then
TypeORMとは、Typescript用のORマッパーです。TypeORMを使って、Express + Docker + MySQLの環境構築からマイグレーションまでを行います。 OSはMacを使います。Node、Yarn、Dockerが既にインストールされていることを前提に進めます。扱うツールなどのバージョンは以下の通りです。 Node Yarn Express TypeScript MySQL
はじめに TypeORM を用いたプロジェクトで、実際のDBに問い合わせるリポジトリのテストができていない課題がありました。 PHP の Web フレームワーク Laravel 等ではテスト毎にDBをリセットする仕組みがあり、リクエスト〜レスポンスまで一貫してモックせずDBアクセスまでテストすることもできます。車輪の再発明感はありますが、後学のために同様の仕組みを TypeORM に対応する形で構築してみようと思います。
こんにちは、株式会社カミナシのエンジニア @imuです。 はじめに みなさんのプロダクトでテスト書いてますか? 『カミナシ』はオフライン機能を提供しており、ローカルデータベースはSQLite(expo-sqlite)を利用しています。 オフライン機能って何?という話は、こちらの記事をご参照ください。 kaminashi-developer.hatenablog.jp SQLiteに保存されるデータは『カミナシ』にとって重要なデータが保存されています。 そのため万が一にでもデータを欠損してはいけないため、テストを充実させていきたいと思っています。 まずはCRUD処理を簡単に書いてみようと思ったのですが、SQLite(expo-sqlite)+ TypeORMで接続のテストが書けずに困った話をしようと思います。(これを解決出来たらCRUD処理を書きたい) もし解決策を知っている方がいたら教えて
Nest.jsとは Nest.js は Node.js のフレームワークであり、TypeScript を完全サポートしています。 デフォルトでは Express をコアとして動作しますが、Fastify をコアとして動作させることもできます。 Nest.js と特徴は以下のとおりです。 Angular 風のアーキテクチャ フレームワークで DI の機構が用意されている デコレータによる関心の分離 Nest.jsプロジェクトの作成 最初に、Nest CLI をインストールします。 Nest CLI は Anguar CLI とよく似ておりアプリケーションの新規作成や service、controller、model などのアプリケーションの構成要素の作成などを手助けしてくれます。
使用技術 Electron デスクトップアプリケーションを作成するためのフレームワークで、異なるOS(Windows、macOS、Linux等)で同じ仕様のアプリケーションを動かすことができます。Electronではメインプロセスとレンダラープロセスが存在し、それぞれ実装していくことになります。 メインプロセスはNode.js環境で動作し、ElectronのAPIやNode.jsのAPIにフルアクセス可能です。 レンダラープロセスはChromium(Web)環境で動作し、WebAPIへのアクセスがメイン Electronについては以下のZennBookの解説が分かりやすいです。 TypeORM DBのテーブル操作に使用するTypeScriptで記載するORMライブラリです。DBのテーブルやビューを、プログラム内のクラスやオブジェクトにマッピングし、SQLを直接書かずにデータベース操作が可能
バイトルPRO開発課の渡邉(@y640drums)です。 今回は社内で導入され始めたNestJSというFWで自動テストの実施方法について試行錯誤したので、そのときに得た知見を共有します。 前提 今回はJestでNestJS x TypeORMアプリをDocker上でテストします。 使用する技術のバージョン情報です。 /backend $ npx nest i _ _ _ ___ _____ _____ _ _____ | \ | | | | |_ |/ ___|/ __ \| | |_ _| | \| | ___ ___ | |_ | |\ `--. | / \/| | | | | . ` | / _ \/ __|| __| | | `--. \| | | | | | | |\ || __/\__ \| |_ /\__/ //\__/ /| \__/\| |_____| |_ \_| \_
【期間限定:ほぼチャプター無料公開 (公開終了期間未定)】 フロントエンドはNext.jsで、バックエンドはNestJSでやりたいとなった時に参考になるようにまとめようと思います。実務でも使えると思いますので、ぜひ活用ください。 説明は簡潔明瞭にするので、わからない部分はさらにググってみてください。本書の目標は「何となくわかるようになる」です。 なお、環境はMacにて動作確認しております。 本書で学べること ・データベースを利用したバックエンド(API)の構築方法 ・データベースにデータをCRUD(追加・読取・更新・削除)する方法 ・フロントエンドからバックエンド(API)を使う方法 ・Next.jsとNestJSのおすすめディレクトリ構成 キーワード(技術スタック) 「Next.js」「NestJS」「TypeScript」「REST API」「TypeORM」「MySQL」「Tailw
こんにちは!BC チームでエンジニアをしている id:d-kimuson です。 今回は外部リレーションに関して型安全性の乏しい TypeORM の Data Mapper パターンを独自のユーティリティ型を使ってちょっとマシにする方法を紹介します。 前提: TypeORM の外部リレーションについて TypeORM では ManyToMany 等のデコレータを使ってスキーマに Foreign Key を書くことができます。 // 公式ドキュメントのサンプルです @Entity() export class Category { @PrimaryGeneratedColumn() id: number @Column() name: string @ManyToMany((type) => Question, (question) => question.categories) quest
Node.js ecosystem is experiencing an interesting development of toolings in the ORM fields. Few years ago, we had the veteran ORMs , Sequalize and TypeORM. In the last year and a half, 2 more libraries are gaining popularity — Prisma and Drizzle. each one of those 4 libraries is part of different family of tools. So what are they? what are their strength ? and if I start a new project — which one
TypeORM の date は Date ではなかった TypeORM で以下のような Entity を定義します。 birthday なので、日付と時刻を表す timestamp ではなく、日付のみを表す date をデータベース上の型としています。 @Entity('users') export class User extends BaseEntity { @Column({ name: "name" }) public name: string; @Column({ name: "birthday", type: "date" }) public birthday: Date; }
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く