基本使用
(可以独立定义,也可以在组件内定义,如果一个js文件里全是服务器action,可以在文件头声明use server)
注意server action必须是async函数
本质
相当于在创建了一个fetch api
与数据库使用关联
首先创建前端表格
export const addPost = async (prevState,formData) => {
// const title = formData.get("title");
// const desc = formData.get("desc");
// const slug = formData.get("slug");
const { title, desc, slug, userId } = Object.fromEntries(formData);
try {
connectToDb();
const newPost = new Post({
title,
desc,
slug,
userId,
});
await newPost.save();
console.log("saved to db");
// 发布模式下可能无法立即获取新的数据
// 通过重新验证一下路径实现数据更新
revalidatePath("/blog");
revalidatePath("/admin");
} catch (err) {
console.log(err);
return { error: "Something went wrong!" };
}
};