- 環境變數問題
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
-
npx prisma db push
默認取 .env 組態檔,那多環境怎么處理? -
增加
.env.test
.env.prod
等檔案, 安裝dotenv-cli
,執行dotenv -e .env.test -- npx prisma db push
來指定 prisma 的運行環境 -
實際專案中與 nodejs (koa、egg、midway、nest)等框架結合使用時,如 midway.js ,包含內置組態檔為 config.test.ts 啟動使用
NODE_ENV
來指定環境變數 ,啟動命令如下cross-env NODE_ENV=test pm2 start ./bootstrap.js --name=midway-app -i 2
,那么怎么讓 prisma 知道是 test 環境呢? -
執行命令
dotenv -e .env.test -- cross-env NODE_ENV=test pm2 start ./bootstarp.js --name=midway-app -i 2
-
Prisma ORM 創建關系型資料庫時,如何不創建外鍵,依然能夠關聯查詢?
- 很簡單,增加
relationMode = "prisma"
,選擇prisma模式, 注意索引@@index()
datasource db { provider = "mysql" url = env("DATABASE_URL") relationMode = "prisma" }
model User { id String @id @default(uuid()) roleId String? role UserRole? @relation(fields: [roleId], references: [id]) @@index([roleId]) @@map("user_admin") } model UserRole { id String @id @default(uuid()) code String @db.VarChar(32) name String @db.VarChar(32) User User[] @@map("user_role") }
- 很簡單,增加
-
Prisma 使用
@createAt
與@updateAt
時差問題怎么解決?(這里是mysql,其它應該同理)-
prisma 使用了
@createAt
與@updateAt
在其引擎內部處理時,同一處理成了UTC
時間格式,也就是比北京時間慢8
個小時,(mysql 、linux 時間均正常的情況下)-
可能引擎是國外開發的吧,想自動創建時間,以及修改自動更新時間的話,上面兩種不能采取,使用如下方式取代:
model Dept { id Int @id @default(autoincrement()) name String @db.VarChar(255) desc String @db.VarChar(255) createAt DateTime @default(dbgenerated("NOW()")) @db.DateTime updateAt DateTime @default(dbgenerated("NOW() ON UPDATE NOW()")) @db.Timestamp(0) @@map("user_dept") }
- 使用
NOW()
,其實也就是select now()
的時間, updateAt
在mysql
里面想自動更新的話,需要設定欄位型別timestamp
,欄位值:CURRENT_TIMESTAMP
,以及根據時間戳更新,這里轉化成prisma 語法如上
@default(dbgenerated("NOW() ON UPDATE NOW()")) @db.Timestamp(0)
- 使用
-
-
如果有其它關于 prisma 的問題,歡迎一起探討!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/556438.html
標籤:其他
上一篇:如何實作巡檢報告?
下一篇:返回列表