私はExpress、mongodb、mongooseの簡単なNodeJSテストアプリを持っています。今のところ、私はコードを少しきれいにして、ベストプラクティスを見つけることを試みています。私の措置の1つはRESTルートを抽出することですが、それを行う上で問題があります。私はそれができる方法の量によって混乱しています.2016年にそれを行う最良の方法は何ですか?nodejs RESTパスのエクスポート(エクスプレス付き)
私のコード(app.js):私は別ファイルとして/students
と/subjects
を抽出したいと私のapp.js.でそれらを必要と
"use strict"
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const Subjects = require('./models/Subjects').model('Subjects');
const Students = require('./models/Students').model('Students');
const app = express();
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
mongoose.connect('mongodb://localhost/schoolapp');
app.get('/subjects', function(req, res) {
Subjects.find({})
.exec(function(err, subjects) {
if(err) {
res.send('error msg has occured');
} else {
res.json(subjects);
}
})
});
app.put('/subjects', function(req, res) {
const query = {name: req.body.name};
const update = {$inc: {votes: 1}};
Subjects.findOneAndUpdate(query, update,
function(err, newSubject) {
if(err) {
console.log('An error occured');
} else {
res.send(newSubject);
}
})
})
app.post('/subjects', function(req, res) {
let newSubject = new Subjects();
newSubject.name = req.body.name;
newSubject.level = req.body.level;
newSubject.votes = 0;
newSubject.save(function(err, subject) {
if(err) {
res.send('error saving subject');
} else {
res.send(subject);
}
})
});
app.get('/students', function(req, res) {
Students.find({})
.exec(function(err, students) {
if(err) {
res.send('error saving students');
} else {
res.send(students);
}
})
})
app.post('/students', function(req, res) {
let newStudent = new Students();
newStudent.name = req.body.name;
newStudent.save(function(err, student) {
if(err) {
res.send('error saving student');
} else {
res.send(student);
}
})
})
app.put('/students', function(req, res) {
const query = {"_id": req.body.id};
const update = {$push: {subjects: req.body.name}};
Students.findOneAndUpdate(query, update,
function(err, newSubject) {
if(err) {
res.send('something went wrong');
} else {
res.send(newSubject);
}
});
})
app.listen(3000, function() {
console.log('app listening on port 3000');
});
module.exports = function(app) {
app.get('/students', ...)
}
とapp.jsに:
var students = require(./rest/students)(app);
感謝:)私はしました
http://expressjs.com/en/api.html#router –
はい、@ MH-cbonは右である:この(それは簡単な例を示しているので)
は私も有用な、この記事を見つけました複数のルータを使用するための完全なケースです。 – robertklep
私はHTMLテンプレートを提供するつもりはありません、私はちょうど残りのAPIとしてノードを使用したい、これはまだ複数のルータのための完全なケースですか? – Baki