チート集

SQL直実行dataSource.query()配列が戻り値
SQL直実行でバイドdataSource.query("xxx = ?",[1])PHPと同じじゃ!
SQLに近いが独自dataSource.createQueryBuilder(Entity).getMany()
カウントdataSource.getRepository(Trips).count({ where: { carId: carId } })条件付けないならcount()あるが、一度に取得できるfindAndCountがよい
where条件直記載dataSource.getRepository(PosRecords).count({where: {recorded: Raw((alias) => `${alias} between :from AND :to`,{from: '2022-10-1', to: '2022-11-1'})}});toとfromをパラメータ化

既存DBからEntity生成

https://www.npmjs.com/package/typeorm-model-generator

npx typeorm-model-generator

後はインタラクティブにMySQLを選べばOK!

npm typeorm-model-generator -h 127.0.0.1 -d <database>  -u root -x [password] -e mariadb

find/findBy

findはrelationなどいろいろ設定できるにたいし、findByは条件のみ記載できる。そのためorderなどを指定する場合は必然的にfindを使うことになり、findOneBy以外はあまり使わないんではないか? Oneはその1レコードバージョンでAndCountだと件数も取れる

in条件In(array)

参考サイト

ManyToMany

https://zenn.dev/msksgm/articles/20211124-typeorm-many2many

自然に任せると勝手にテーブル推定してわけわからんので指定すること!StoreテーブルのPrefectureがこれ!

 @ManyToMany(() => Prefecture)
 @JoinTable({
     name: "store_prefecture", // table name for the junction table of this relation
     joinColumn: {
         name: "store_id",
         referencedColumnName: "id"
     },
     inverseJoinColumn: {
         name: "prefecture_id",
         referencedColumnName: "id"
     }
 })

トラブルシューティング

migrationテーブル

すでにDBがあるのにmigrationsテーブルがない(または消した)場合。

テーブルあるのに作ろうとしてエラー。

migrationでdatetimeのデフォルト値エラー

create table test (`created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)
create table test (`created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)
 @UpdateDateColumn({ name: 'modified', type: 'datetime', width: 6, precision: 0})

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-03-30 (土) 10:21:30