Lab3
.docxСтудента ИТ14-1 Красовского А.В.
Лабораторная работа 3 Изучение возможностей СУБД MongoDB.
Цель: изучить основные возможности использования документоориентированной СУБД mongoDB как хранилище данных в приложениях.
Ход работы.
В ходе выполнения лабораторной работы было создано приложение, работающее в среде node.js с использованием языка JavaScript.
Код:
Server.js:
'use strict';
const express = require('express'); const path = require('path'); const getDb = require('./db.js'); const bodyParser = require('body-parser')
const app = express();
const IndexController = require('./controllers/IndexController'); const AddCommentController = require('./controllers/AddCommentController');
app.set('view engine', 'pug'); app.set('views', path.join(__dirname, 'views')); |
app.use( bodyParser.json() ); app.use(bodyParser.urlencoded({extended: true})); app.use(express.static('./assets'));
app.get('/', (req, res) => { (new IndexController(req, res)).run(); });
app.post('/add-comment', async (req, res) => { (new AddCommentController(req, res)).run(); });
app.listen(3000, () => { console.log('App is running...'); }); |
IndexController.js:
const getDb = require('../db.js');
class IndexController { constructor (req, res) { this.req = req; this.res = res; }
async run () { try{ var db = (await getDb()).db; } catch (e) { console.log(e); }
|
let comments = db.collection('comments');
comments.find().sort({_id: -1}).toArray( (err, docs) => { this.res.render('index', { comments: docs, error: err }); });
} } |
AddCommentController.js:
const getDb = require('../db.js');
class AddCommentController { constructor (req, res) { this.req = req; this.res = res; }
async run () { let db = (await getDb()).db;
const comments = db.collection('comments');
let username = this.req.body.username, comment = this.req.body.comment; |
if (username && comment) { comments.insertOne({username: username, content: comment}, (err, result) => {
if(err) { this.res.send(err); }
this.res.redirect(200, '/'); }); } } }
module.exports = AddCommentController; |
Результат:
Вывод: в ходе выполнения лабораторной работы мной были получены навыки использования СУБД mongoDB в роли хранилища данных для серверных приложений Node.Js.s