Nextjs 服务器操作问题
形式为:
type Ingredient = {
name: string;
purchasePrice: Prisma.Decimal;
}
const onSubmit = async (values: Ingredient) => {
await addIngredient(values)
}
在成分-actions.ts 文件中:
export const addIngredient = async (ingredientData: Ingredient ): Promise<IngredientPrisma | ErrorMessage> => {
try {
const ingredientResponse = await prisma.ingredient.create({ data: {
name: ingredientData.name,
purchasePrice: ingredientData.purchasePrice,
} });
revalidatePath('/dashboard');
return ingredientResponse;
} catch (err) {
return {
message: 'Error creating ingredient'
}
}
}
我遇到错误(“只有普通对象可以传递给服务器函数”),
所以同时我正在通过addIngredient(JSON.stringify(values))
在onSubmit
. 并在操作的定义中,通过执行撤消JSON.parse(ingredientData)
。
export const addIngredient = async (ingredientData: string): Promise<IngredientPrisma | ErrorMessage> => {
try {
const ingredient:Ingredient = JSON.parse(ingredientData);
const ingredientResponse = await prisma.ingredient.create({ data: {
name: ingredient.name,
purchasePrice: ingredient.purchasePrice,
} });
revalidatePath('/dashboard');
return ingredientResponse;
} catch (err) {
return {
message: 'Error creating ingredient'
}
}
}
如果不使用 JSON 你会如何处理这个问题?