Dichiarazione di non responsabilità: Questa è la mia prima volta: utilizzo del nodo, creazione di un'API REST e prova lato server MVC. (quindi, statisticamente parlando, probabilmente sto facendo qualcosa di sbagliato ¯ \ _ (ツ) _ / ¯)
Sto lavorando alla creazione di una piattaforma di condivisione video da utilizzare nella mia università.
Sarà un'applicazione a singola pagina con instradamento lato client. Pianifico di effettuare richieste ajax a un'API REST per la funzionalità CRUD.
La struttura di base che ho raggiunto finora è che i miei "controller" ricevono le richieste di routing e chiamano le funzioni del modello per interagire con il DB. Ad esempio:
controllers/courses.js
:
var express = require('express');
var router = express.Router();
var models = {};
models.courses = require('../models/courses.js');
router.get('/api/courses', models.courses.get_all);
router.get('/api/courses/:id', models.courses.get);
router.post('/api/courses', models.courses.create);
router.put('/api/courses/:id', models.courses.update);
router.delete('/api/courses/:id', models.courses.delete);
models/courses.js
:
var db = require('../config/db_config.js');
exports.get_all = function (req, res, next) {
db.any('select * from course')
.then(function (data) {
res.status(200).json({
status: 'success',
data: data,
message: 'Retrieved all courses'
});
})
.catch(function (err) {
return next(err);
});
};
exports.get = function (req, res, next) {
db.one('select * from course where id = $1', req.params.id)
.then(function (data) {
res.status(200).json({
status: 'success',
data: data,
message: 'Retrieved a course'
});
})
.catch(function (err) {
console.log(err);
return next(err);
});
};
Questo è più o meno il modo giusto per farlo? Mi prevedi di imbattermi in problemi lungo la strada?
Il mio intestino dice che il codice del modello dovrebbe passare i risultati della query al controller, anziché tornare direttamente al client. È corretto? Se è così, come potrei fare a riguardo?
Dimmi cosa faresti diversamente.