Reputation: 103
I am trying to get list of the data from mongodb using find() and although I do have data at the collection, it returns no data! I can't figure out what the reason is, can anyone help?
result like : { error: false, massage: [ ] }
this is the project Dependencies
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.17.1",
"express-handlebars": "^3.1.0",
"mongoose": "^5.8.3",
"nodemon": "^2.0.2"
}
server.js
require('./models/db');
const express = require('express');
const loController = require('./controllers/loController');
var app = express();
app.listen(3000, () => {
console.log('I am Listening ... ');
});
app.use('/lomanager', loController);
db.js
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/LOManager', { useNewUrlParser: true, useUnifiedTopology: true }, (error) => {
if (!error) console.log('mongoose connection success');
else console.log("error with mongo connnect" + error);
});
require('./lo.model');
lo.model.js
const mongoose = require('mongoose');
var loSchema = new mongoose.Schema({
_id: Number,
name: String,
email: String
});
module.exports = mongoose.model('LO', loSchema);
loController.js
const express = require('express');
var loSchema = require('../models/lo.model');
var mongoose = require('mongoose');
var router = express.Router();
router.get('/', (req, res) => {
res.json('helo from lo Controller');
});
router.get('/list', (req, res) => {
var result = {};
loSchema.find({}, (err, data) => {
if (err) {
result = { "error": true, "message": "error in the find" }
} else {
result = { "error": false, "massage": data };
}
res.json(result);
});
});
module.exports = router;
Upvotes: 1
Views: 879
Reputation: 103
that happened because Mongoose pluralizes the collection name by default
so we can also do it like that:
var loSchema = new mongoose.Schema({
_id: Number,
name: String,
email: String
} , {collection: 'LO'});
module.exports = mongoose.model('LO', loSchema);
this link explained why! mongoose-force-collection-name
Upvotes: 0
Reputation: 1080
your collection name is 'LO' so please use that code
module.exports = mongoose.model('LO', loSchema,'LO');
Upvotes: 3