'Seeding atlas database - Cannot read property 'deleteMany' of undefined
After some small changes this code is not seeding the atlas database anymore. Quite sure is a syntax or typo error. Attaching all three relevant files, I really hope someone of you could find a solution as I spent 7 hours on this already. It was working till yesterday, but after trying to use dotenv everything has been messed up.
server.js
const express = require('express');
const connectDB = require('./config/db');
var cors = require('cors');
const path = require('path');
const mongoose = require ('mongoose')
// routes
// const routes = require('./');
const app = express();
// Connect Database
connectDB();
// cors
app.use(cors({ origin: true, credentials: true }));
// Init Middleware
app.use(express.json({ extended: false }));
app.get('/', (req, res) => res.send('Hello world!'));
app.use(express.static(path.join(__dirname, 'client/build')))
// use Routes
// app.use('/api/books', books);
const port = process.env.PORT || 8082;
app.listen(port, () => console.log(`Server running on port ${port}`));
db.js
const db = config.get('mongoURI');
const mongoose = require('mongoose')
// require('dotenv').config()
const connectDB = async () => {
try {
await mongoose.connect(db,{ useNewUrlParser: true });
console.log('MongoDB is Connected...');
} catch (err) {
console.error(err.message);
process.exit(1);
}
};
module.exports = connectDB;
guests.js
const Schema = mongoose.Schema
const Guest = new Schema
({name :
{
type : String
}})
const Guests = mongoose.model('Guests', Guest)
module.exports = { Guests };
seed.js
const db = require('./guests')
mongoose.connect("My personal URI", { useNewUrlParser: true, useFindAndModify: false, useUnifiedTopology: true })
const GuestSeed = [{
name: 'andrea'
}, {
name: 'harith'
}]
db.guest.deleteMany({})
.then(() => db.guest.collection.insertMany(GuestSeed))
.then((data) => {
console.log(data.lenght + ' records inserted');
process.exit(0)
})
.catch((err) => { console.error(err) })
I receive this error:
TypeError: Cannot read property 'deleteMany' of undefined
Solution 1:[1]
From your guests.js file you're exporting an object that looks like this :
{
Guests : <MongooseModel>
}
However, in your seed.js file you are trying to access a property guest from this object, which doest not exist. The error your are seeing (TypeError: Cannot read property 'deleteMany' of undefined) supports this theory, since db.guest is undefined.
Instead of
db.guest.deleteMany
try this
db.Guests.deleteMany
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Pascal Lamers |
