Im new to nodejs.i already have a db named aqi with collection name pln. Im trying to show all the records in collection on web page but mongoose always returns empty array. i have tested it with other dbs but i can get data from them but for pln mongoose always return empty array. i would really appreciate it if someone could help me out. this is my schema
var Pln = new Schema({
latit : Number,
longit : Number,
timestmp : String,
co : Number,
smoke : Number,
O3 : Number,
humidity : Number,
temperature: Number,
co2 : Number,
dust : String
});
var plnModel = mongoose.model('pln', Pln);
This is my route.
app.get('/', function(req, res) {
res.contentType('application/json');
plnModel.find({}, function(err, pln) {
if (pln != null) {
console.log('Found the User:' + pln.latit);
res.send(JSON.stringify(pln));
}
});
});
If you define your model this way : mongoose.model('pln', Pln)
, then your collection must be named 'plns'
(= your model name + s )
If that's not the case, then you have to tell Mongoose that you have a custom collection name (in your case, from your comments, 'pln'
without a s) by using :
mongoose.model('pln', Pln, 'pln')
, the third argument being your collection's actual name.
And have a look at this code :
app.get('/', async (req, res) => {
try {
const pln = await plnModel.find().lean().exec(); // "lean" to get only JSON data (not Mongoose objects), faster
console.log('Found Users :', pln);
res.status(200).json(pln);
} catch(err) {
res.status(500).json(err);
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With