I have implemented mongoose and used the query model.findOne() to return a document in order to render my jquery datatable. However, after five times querying, the connection seems blocked and stopped getting the data... Below is my server code to request mongodb data:
var rack_id;
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const server = require('http').createServer(app);
const mongoose = require('mongoose');
const Hserack = require('./Hserack');
const url = `mongodb+srv://xxxxxxxx.mongodb.net/xxxxxxxxx?
retryWrites=true&w=majority`;
const port = process.env.PORT || 1311;
mongoose.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true,
minPoolSize: 100,
keepalive: true,
keepAliveInitialDelay: 300000
});
const db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:
"));
db.once("open", function () {
console.log("Connected successfully");
});
app.get('/rack_list', (_req,res) => {
async function listHseracks() {
return await Hserack.find();
}
listHseracks().then( data=>
res.json({text: data}))
})
// Data can be requested via GET method
app.get('/', (_req, res) => {
res.sendFile(__dirname + "/index.html");
});
app.post('/rack_id', (req, _res) => {
rack_id = req.body.rack_id;
})
app.get('/rack_data', (_req,res) => {
async function rackData() {return await Hserack.findOne({_id:
rack_id})}
rackData().then( data=>
res.json({text: data}))
})
server.listen(port);
Code in Hserack.js:
const mongoose = require('mongoose');
var collection_name = "boxd1213";
const hserackSchema = new mongoose.Schema({
_id : Number,
data: [],
SHELFCOUNT: Number
}, {collection: collection_name});
module.exports = mongoose.model("Hserack", hserackSchema)