简体   繁体   中英

Nextjs connect with MongoDB

I'm new in nextjs and coding, I try in node.js is fine, but I try in next.js, I get this error, help!

Thank You,

OverwriteModelError: Cannot overwrite 'CountDown' model once compiled.

 import mongoose from 'mongoose' // mongoose connection mongoose.connect(process.env.MONGODB_URI); // mongoose items setup ------------------------- const countdownSchema = { title: { type: String, required: [true, 'Please input Event name'], unique: true, trim: true, maxLength: [50, 'Title cannot be more then 50 charactor'] }, year: String, month: String, day: String, time: String }; // mongoose model const CountDown = mongoose.model("CountDown", countdownSchema); // end mongoose setup ---------------------------- export default function Model() { // default build mongoDB const item = new CountDown({ title: '2023 Chinese New Year', year: '2023', month: 'January', day: '22', time: '09:00' }); item.save(); return ( <> <h1>Hello World</h1> </> ) }

That error happens if you do not have this line in your mongoose model file.

export default mongoose.models.CountDown || mongoose.model("CountDown", countdownSchema);

You should write your model in a separate file and then export it like above. If mongoose.models.CountDown is missing you get that error in next.js

You cannot connect to your MongoDB from javascript apps, because javascript runs on the browser while your database resides on the server.

Instead, you should be thinking about coding an API using node, and then expose endpoints you can call from javascript side to execute MongoDB operations.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM