Action
Khi sử dụng action
trong remix, dùng ActionSuccess
và ActionError
thay thế cho json
Ví dụ
import { type ActionFunctionArgs } from '@remix-run/node';
import { isValidObjectId } from 'mongoose';
import { createTodoUseCase } from '~/application/use-cases/todo/create.use-case';
import type { TodoEntity } from '~/domain/entities/todo.entity';
import { todoRepository } from '~/infrastructure/models/todo';
import { actionError, actionSuccess } from '~/libs/utils/json';
export async function modifyTodoAction({ request, params }: ActionFunctionArgs) {
const id = params.id;
const formData = await request.formData();
if (request.method === 'POST' && id === 'new') {
const { title, description } = JSON.parse(formData.get('input') as string) as TodoEntity.CreateInput;
// ActionError
if (!title) return actionError('Title is required', [{ field: 'title', message: 'Title is required' }]);
const created = await createTodoUseCase(todoRepository, { title, description });
// Action Success
return actionSuccess(created);
}
return actionError('Method not allowed');
}