diff --git a/next-server-actions/app/layout.jsx b/next-server-actions/app/layout.jsx new file mode 100644 index 00000000..ada19939 --- /dev/null +++ b/next-server-actions/app/layout.jsx @@ -0,0 +1,9 @@ +// app/layout.tsx +export const metadata = { + title: 'Your App', + description: '…', +}; +export default function RootLayout({ children, }) { + return ({children} + ); +} diff --git a/next-server-actions/app/layout.js b/next-server-actions/app/layout.tsx similarity index 85% rename from next-server-actions/app/layout.js rename to next-server-actions/app/layout.tsx index 8d9e6f39..84f3e8d7 100644 --- a/next-server-actions/app/layout.js +++ b/next-server-actions/app/layout.tsx @@ -6,7 +6,7 @@ export const metadata = { export default function RootLayout({ children, -}) { +}: { children: React.ReactNode }) { return ( {children} diff --git a/next-server-actions/app/page.jsx b/next-server-actions/app/page.jsx new file mode 100644 index 00000000..3fe905fd --- /dev/null +++ b/next-server-actions/app/page.jsx @@ -0,0 +1,35 @@ +import mongoose from 'mongoose'; +import { revalidatePath } from 'next/cache'; +mongoose.connect('mongodb://127.0.0.1:27017/mongoose_test'); +const userSchema = new mongoose.Schema({ + name: { type: String, required: true, trim: true, minLength: 6 } +}, { timestamps: true }); +const User = mongoose.model('User', userSchema, 'users', { overwriteModels: true }); +// --- Server Action --- +async function addUser(formData) { + 'use server'; + const name = String(formData.get('name') || '').trim(); + await User.create({ name }); + revalidatePath('/'); +} +// --- Page --- +export default async function Page() { + const users = await User.find().sort({ _id: -1 }).lean(); + return (
+

Users

+ +
+ + +
+ + +
); +} diff --git a/next-server-actions/app/page.js b/next-server-actions/app/page.tsx similarity index 87% rename from next-server-actions/app/page.js rename to next-server-actions/app/page.tsx index 73da5d2b..e028a02d 100644 --- a/next-server-actions/app/page.js +++ b/next-server-actions/app/page.tsx @@ -1,7 +1,7 @@ import mongoose from 'mongoose'; import { revalidatePath } from 'next/cache'; -await mongoose.connect('mongodb://127.0.0.1:27017/mongoose_test'); +mongoose.connect('mongodb://127.0.0.1:27017/mongoose_test'); const userSchema = new mongoose.Schema( { @@ -13,7 +13,7 @@ const userSchema = new mongoose.Schema( const User = mongoose.model('User', userSchema, 'users', { overwriteModels: true }); // --- Server Action --- -async function addUser(formData) { +async function addUser(formData: FormData) { 'use server'; const name = String(formData.get('name') || '').trim(); await User.create({ name }); @@ -40,7 +40,7 @@ export default async function Page() {