Bengilla
Bengilla

Reputation: 3

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>
        </>
    )
}

Upvotes: 0

Views: 2270

Answers (2)

Yilmaz
Yilmaz

Reputation: 49661

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

Upvotes: 1

Muhammad Reda
Muhammad Reda

Reputation: 27053

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.

Upvotes: -3

Related Questions