#typescript #prisma #nexus-js
#typescript #prisma #nexus-js
Вопрос:
Первое, что я придумал, это вызвать computedInputs
nexusPrisma
опцию. Но это не сработает, поскольку их нужно обрабатывать по-разному в зависимости от ситуации, но глобально:
1. create -> createdAt = now, updatedAt = null
2. update -> createdAt = keep as it is, updatedAt = now
Чтобы заставить его работать, мне нужно настроить computedInputs индивидуально следующим образом:
t.crud.createOneX({
computedInputs: {
createdAt: () => DateTime.utc().toString(),
updatedAt: () => null,
},
});
t.crud.updateOneX({
computedInputs: {
createdAt: () => undefined,
updatedAt: () => DateTime.utc().toString(),
},
});
Хотя это может сработать, я не могу «вычислить» эти входные данные во вложенных моделях. Чтобы предотвратить передачу createdAt / updatedAt, я также должен создать другой t.crud
на этом ресурсе, без этих временных меток.
Последний обходной путь для этого, который может сработать, t.crud
— это вообще не использовать, что является обломком.
Ответ №1:
Спасибо, что задали вопрос.
Prisma может обрабатывать столбцы createdAt
и updatedAt
для вас в ваших моделях. Добавьте атрибуты @default(now())
and @updatedAt
в свои createdAt
updatedAt
столбцы and соответственно. Вы можете добавлять столбцы в свои модели следующим образом:
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean? @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
Вы можете узнать больше о @default(now())
и @updatedAt
в наших документах.
В случае, если у вас возникнут какие-либо другие проблемы и запросы, я буду рад помочь 🙂
Комментарии:
1. В итоге я вручную создал эти поля. Почувствовал себя более под контролем 😅. PS — Если вы только что зарегистрировались, чтобы ответить на мой вопрос, то я просто хочу, чтобы вы знали, что вы легенда.
2. При использовании
@default(now())
и@updatedAt
установке 2 разных временных меток при создании определите, была ли обновлена запись с помощьюcreatedAt !== updatedAt
always returnstrue
.3. Имейте в виду, что последующее добавление
createdAt
with@default(now())
добавляет текущую дату. Это может привести к неправильному пониманию даты создания позже.