في تطبيق ويب JS الحالي الذي أعمل عليه، أقوم حاليًا بعرض rendering صفحاتي بمعلومات محددة من مجموعة بيانات MongoDB Atlas.
للأسف، لا أعرف ما يكفي عن JS لإصلاح مشكلة رئيسية، حيث أن الكود الحالي يستعلم قاعدة البيانات في كل مرة يتم فيها تقديم صفحة حسب ما أفهم، ويبدوا أن تلك مشكلة كبيرة بالنسبة لسرعة تطبيقي، لذا، أرغب في معرفة كيف يمكن استدعاء تلك الاستعلامات وتخزينها في بداية تشغيل تطبيق الويب بحيث لا يحدث ذلك مرة أخرى.
const express = require('express');
const Link = require('./models/link');
const Site = require('./models/site');
const app = express();
const port = 3000;
const dbURI = 'censored';
mongoose.connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true })
.then((result) => app.listen(port))
.catch((err) => console.log(err))
const db = mongoose.connection;
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.get('/', async (req, res) => {
try {
const [links, sites] = await Promise.all([
Link.find({}).sort({ order_no: 'asc' }),
Site.find({}).sort({ order_no: 'asc' })]);
res.render('index', { title: "Home", links, sites })
} catch (e) {
console.log(e);
res.sendStatus(500);
}
});
app.get('/page01', async (req, res) => {
try {
const [links, sites] = await Promise.all([
Link.find({}).sort({ order_no: 'asc' }),
Site.find({}).sort({ order_no: 'asc' })]);
res.render('page01', { title: "Home", links, sites })
} catch (e) {
console.log(e);
res.sendStatus(500);
}
});
app.get('/page02', async (req, res) => {
try {
const [links, sites] = await Promise.all([
Link.find({}).sort({ order_no: 'asc' }),
Site.find({}).sort({ order_no: 'asc' })]);
res.render('page02', { title: "Home", links, sites })
} catch (e) {
console.log(e);
res.sendStatus(500);
}
});