åå¿è
ããã°ã©ããŒã«ãšã£ãŠãNode.jsã®éçºã¯æªå€¢ã®ããã«æãããããããŸããã ãã®çç±ã¯ããã®ãã©ãããã©ãŒã ã®æè»æ§ãšæç¢ºãªã¬ã€ãã©ã€ã³ã®æ¬ åŠã§ãã ããããå®éã«ã¯ããã¹ãŠãããã»ã©æãããã§ã¯ãããŸããã
ããšãã°ãå
žåçãªã¿ã¹ã¯ïŒREST APIã®éçºãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã®ããã¯ãšã³ãã Nodeã®è±å¯ãªæ©èœãšããã®åé¡ã解決ããã®ã«åœ¹ç«ã€å€ãã®è¿œå ã¢ãžã¥ãŒã«ã¯ãè±å¯ãªéžæè¢ã«èµ·å ããè¡ãè©°ãŸãã«åå¿è
ãå°ãå¯èœæ§ããããŸãã ããã§ã®äž»ãªåé¡ã¯ãã³ã³ããŒãã³ãã®éžæãšãããã®ã³ã©ãã¬ãŒã·ã§ã³ã®æ§æã§ãã
ã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒåŽãäœæããæ¹æ³ã®1ã€ã¯ãNode.jsãExpressãã¬ãŒã ã¯ãŒã¯ãããã³MongoDB DBMSã®ãã³ãã«ã䜿çšããããšã§ãã å®éã仿¥ã¯ãã»ãŒãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã®åºç€ãšããŠæ©èœãããå®çšçãªAPIã¬ã€ã¢ãŠããäœæããæ¹æ³ã«ã€ããŠèª¬æããŸãã ããã§ã¯ãã¡ã€ã³ã®RESTã«ãŒããå®è£
ããHTTPãä»ããŠAPIãšå¯Ÿè©±ããããŒã¿ããŒã¹ãæäœããããã®ç°¡åãªãªãã·ã§ã³ã䜿çšããŸãã
ãã®è³æãé©åã«ãã¹ã¿ãŒããã«ã¯ãREST APIãšã¯äœããçè§£ããCRUDæäœãçè§£ããJavaScriptã®åºæ¬çãªç¥èãå¿
èŠã§ãã ããã§ã¯ãç¹ã«è€éãªãã®ã§ã¯ãªããäž»ã«ç¢å°é¢æ°ã§ããES6ã䜿çšããŸãã
Google Keepãšåæ§ã«ãã¡ã¢ãäœæããããã®ã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒåŽã®ã¹ã±ã«ãã³ãéçºããŸãã åæã«ãããŒãã䜿çšããŠ4ã€ã®CRUDã¢ã¯ã·ã§ã³ãã¹ãŠïŒã€ãŸããäœæãäœæãèªã¿åããæŽæ°ãåé€ïŒãå®è¡ã§ããŸãã
äºåæºå
NodeããŸã ãªãå Žåã¯ã
ã€ã³ã¹ããŒã«ããŸãã ã€ã³ã¹ããŒã«åŸããã©ã«ããŒãäœæããã³ãã³ããå®è¡ããŠãã®äžã®æ°ãããããžã§ã¯ããåæåããŸãã
npm init
åæåäžã«ã質åã«çããŠãã ãããç¹ã«ãã¢ããªã±ãŒã·ã§ã³ã«ã泚ç®ãã¹ããïŒãŸãã¯ãå¿
èŠã«å¿ããŠä»ã®ååïŒã®ååãä»ããŸãã
ããã§ã
package.jsonãã¡ã€ã«ããã©ã«ããŒã«è¡šç€ºãããŸãã ããã¯ããããžã§ã¯ããäŸåãã远å ããã±ãŒãžã®ã€ã³ã¹ããŒã«ãéå§ã§ããããšãæå³ããŸãã
ãã¬ãŒã ã¯ãŒã¯ãšããŠãExpressã䜿çšããäºå®ã§ãã ããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã¯MongoDBã«ãªããŸãã ããã«ãJSONã§ã®äœæ¥ãæ¯æŽããããã«ãbody-parserããã±ãŒãžã䜿çšããŸãã ããããã¹ãŠã€ã³ã¹ããŒã«ããŸãã
npm install
ãŸããNodemonãdeväŸåé¢ä¿ãšããŠã€ã³ã¹ããŒã«ããããšã匷ããå§ãããŸãã ããã¯ããã¡ã€ã«ã倿Žãããšèªåçã«ãµãŒããŒãåèµ·åããã·ã³ãã«ãªå°ããªããã±ãŒãžã§ãã
ãã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
npm install
ãã®åŸã次ã®ã¹ã¯ãªããã
package.jsonãã¡ã€ã«ã«è¿œå ã§ããŸãã
// package.json "scripts": { "dev": "nodemon server.js" },
宿ãã
package.jsonã¯æ¬¡ã®ããã«ãªããŸãã
// package.json { "name": "notable", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "dev": "nodemon server.js" }, "author": "", "license": "ISC", "dependencies": { "body-parser": "^1.15.2", "express": "^4.14.0", "mongodb": "^2.2.16" }, "devDependencies": { "nodemon": "^1.11.0" } }
ããã§ã
server.jsãã¡ã€ã«ãäœæããAPIã®äœ¿çšãéå§ããŸãã
ãµãŒããŒ
server.jsãã¡ã€ã«å
ã®äŸåé¢ä¿ãæ¥ç¶ããããšããå§ããŸãããã
// server.js const express = require('express'); const MongoClient = require('mongodb').MongoClient; const bodyParser = require('body-parser'); const app = express();
MongoClientã䜿çšããŠããŒã¿ããŒã¹ãšå¯Ÿè©±ããŸãã ãŸããããã§ã¯ãExpressãã¬ãŒã ã¯ãŒã¯ã®ã€ã³ã¹ã¿ã³ã¹ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã象城ãã
app
宿°ãåæåããŸãã ãµãŒããŒãæ©èœãããããã«æ®ã£ãŠããã®ã¯ãã¢ããªã±ãŒã·ã§ã³ã«HTTPèŠæ±ã®ãªãã¹ã³ãéå§ããããã«æç€ºããããšã ãã§ãã
ããã§ããŒããæå®ããæ¬¡ã®ããã«ãªã¹ãã³ã°ãéå§ããŸãã
// server.js const port = 8000; app.listen(port, () => { console.log('We are live on ' + port); });
npm run dev
ã³ãã³ãïŒãŸãã¯Nodemonãã€ã³ã¹ããŒã«ããªãã£ãå Žåã¯
node server.js
ïŒãå®è¡ãããšããWe are live on port 8000ããšããã¡ãã»ãŒãžãã¿ãŒããã«ã«è¡šç€ºãããŸãã
ãããã£ãŠããµãŒããŒã¯åäœããŠããŸãã ãããä»ã圌ã¯äœã®åœ¹ã«ãç«ã¡ãŸããã ãããçè§£ããŸãããã
CRUDæäœæåã®ã«ãŒã
4ã€ã®ã«ãŒããäœæããäºå®ã§ãã ããªãã¡ïŒ
- CREATE-ã¡ã¢ãäœæããŸãã
- èªã-ã¡ã¢ãèªãã
- æŽæ°-ã¡ã¢ãæŽæ°ããŸãã
- åé€-ã¡ã¢ãåé€ããŸãã
ãã®ã¹ããŒã ãç¿åŸãããšãNodeã䜿çšããŠãã»ãšãã©ãã¹ãŠã®å¿
èŠãªRESTã«ãŒããç·šæããæ¹æ³ãçè§£ã§ããŸãã
APIããã¹ãããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãåŽããã®ãªã¯ãšã¹ããã·ãã¥ã¬ãŒãã§ãããã®ãå¿
èŠã§ãã
PostmanãšåŒã°ããåªããããã°ã©ã ããã®åé¡ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãã ããã«ãããç¹å®ã®ããã£ãšãã©ã¡ãŒã¿ãŒã䜿çšããŠåçŽãªHTTPèŠæ±ãå®è¡ã§ããŸãã
Postmanãã€ã³ã¹ããŒã«ããŸãã ããã§ãã«ãŒããã»ããã¢ããããæºåãã§ããŸããã
ãããžã§ã¯ãæ§é ã«ã€ããŠ
ã»ãšãã©ã®Node.jsããã¥ã¢ã«ïŒããã³å€ãã®å®éã®ã¢ããªã±ãŒã·ã§ã³ïŒã§ã¯ããã¹ãŠã®ã«ãŒãã¯1ã€ã®å€§ããª
route.jsãã¡ã€ã«ã«é
眮ãããŸãã ç§ã¯ãã®ã¢ãããŒããããŸã奜ãã§ã¯ãããŸããã ãã¡ã€ã«ãç°ãªããã©ã«ããŒã«é
眮ãããšãã³ãŒãã®å¯èªæ§ãåäžããã¢ããªã±ãŒã·ã§ã³ã®ç®¡çã容æã«ãªããŸãã
ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯å€§ããªãã®ãšã¯èšããŸãããããã®æ§ãããªèŠæš¡ãèæ
®ããŠãå¿
èŠãªãã¹ãŠãè¡ãããšãææ¡ããŸãã æ¬¡ã®ãã©ã«ããŒãäœæããŸãïŒ
ã¢ããªãã©ã«ããŒãããã³ãã®äžã®
ã«ãŒã ã
routesãã©ã«ããŒã§ã
index.jsããã³
note_routes.jsãã¡ã€ã«ãäœæã
ãŸã ã èšãæãããšããããžã§ã¯ãæ§é ã¯æ¬¡ã®ããã«ãªããŸãïŒ
root> app> routes> index.js and
note_routes.js ã
mkdir app cd app mkdir routes cd routes touch index.js touch note_routes.js
ãã®ãããªæ§é ã¯ãå°ããªã¢ããªã±ãŒã·ã§ã³ã§ã¯åé·ã«èŠãããããããŸãããããã®äŸã«åºã¥ããå€§èŠæš¡ãªã·ã¹ãã ã§ã¯éåžžã«åœ¹ç«ã€ããšãããããŸãã ããã«ãæ¢åã®éçºãæå€§éã«æŽ»çšããŠãããžã§ã¯ããéå§ããããšããå§ãããŸãã
ã¡ã¢ã®äœæïŒã«ãŒãã®äœæ
CREATEã«ãŒãããå§ããŸãããã ãããè¡ãã«ã¯ããã¡ã¢ã®äœææ¹æ³ããšãã質åã«çããŸãã
ã¡ã¢ã®äœæãéå§ããåã«ãã¢ããªã±ãŒã·ã§ã³ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ¡åŒµããå¿
èŠããããŸãã Expressã§ã¯ãã«ãŒãã¯Expressã®ã€ã³ã¹ã¿ã³ã¹ãšããŒã¿ããŒã¹ãåŒæ°ãšããŠåã颿°ã«ã©ãããããŸãã
次ã®ããã«ãªããŸãã
// routes/note_routes.js module.exports = function(app, db) { };
ããã§ã
index.jsã䜿çšããŠãã®é¢æ°ããšã¯ã¹ããŒãã§ããŸãã
// routes/index.js const noteRoutes = require('./note_routes'); module.exports = function(app, db) { noteRoutes(app, db); // , , };
äœãèµ·ãã£ããã
server.jsã«ã€ã³ããŒãã
ãŸã ã
// server.js const express = require('express'); const MongoClient = require('mongodb').MongoClient; const bodyParser = require('body-parser'); const app = express(); const port = 8000; require('./app/routes')(app, {}); app.listen(port, () => { console.log('We are live on ' + port); });
ããŒã¿ããŒã¹ããŸã æ§æããŠããªãããã空ã®ãªããžã§ã¯ãã2çªç®ã®åŒæ°ãšããŠæž¡ãããããšã«æ³šæããŠãã ããã
次ã«ãCREATEã«ãŒããäœæããŸãã ããã®æ§æã¯éåžžã«åçŽã§ãïŒ
module.exports = function(app, db) { app.post('/notes', (req, res) => {
ã¢ããªã±ãŒã·ã§ã³ã '/ notes'ãã¹ã«æ²¿ã£ãŠPOSTãªã¯ãšã¹ããåä¿¡ãããšãã³ãŒã«ããã¯é¢æ°å
ã§ã³ãŒããå®è¡ãããªã¯ãšã¹ããªããžã§ã¯ãïŒãªã¯ãšã¹ããã©ã¡ãŒã¿ãŒãŸãã¯JSONããŒã¿ãå«ãïŒãšã¬ã¹ãã³ã¹ãªããžã§ã¯ãïŒãã¡ããå¿çã«äœ¿çšãããŸãïŒãæž¡ããŸãã
ç§ãã¡ãè¡ã£ãããšã¯ãã§ã«ãã¹ãã§ããŸãã Postmanã䜿çšããŠã
localhostïŒ8000 / notesã« POSTãªã¯ãšã¹ããéä¿¡ã
ãŸã ã
ãªã¯ãšã¹ãã«å¿ããŠãHelloããæ¥ãã¯ãã§ãçŽ æŽãããã æåã®ã«ãŒããäœæãããŸãã æ¬¡ã®ã¹ãããã§ã¯ããªã¯ãšã¹ãã«ãã©ã¡ãŒã¿ãŒã远å ããAPIã§åŠçããæåŸã«ããŒã¿ããŒã¹ã«ã¡ã¢ãä¿åããŸãã
ãªã¯ãšã¹ããã©ã¡ãŒã¿
Postmanã§[
ãã㣠]ã¿ãã«ç§»åãã
x-www-form-urlencodedã©ãžãªãã¿ã³ãéžæããŠãããŒãšå€ã®ãã¢ãããã€ã远å ããŸãã ã€ãŸããæåã®ããŒã¯
titleã§ ããã®å€ã¯
My Note Titleã§ãã 2çªç®ã®ããŒã¯
ããã£ã§ãã ããã®å€ã¯
ãªããšãã°ãããã¡ã¢ã§ãã
ããã«ãããAPIã§åŠçã§ãããšã³ã³ãŒããããããŒã¿ããªã¯ãšã¹ãã«è¿œå ãããŸãã
ç§ã®èšäºã®ã¿ã€ãã«ã¯ãããèªäœãéåžžã«ã·ã³ãã«ã§ãããã«æ³ååã瀺ãããšãã§ããŸãnote_route.jsãã¡ã€ã«ã§ã¯ãã³ã³ãœãŒã«ã«ããŒãã®æ¬æãåºåããã ãã§ãã
// note_routes.js module.exports = function(app, db) { app.post('/notes', (req, res) => { console.log(req.body) res.send('Hello') }); };
Postmanã䜿çšããŠãªã¯ãšã¹ããéä¿¡ãããšã...
undefined
ãšè¡šç€ºãããŸãã
æ®å¿µãªãããExpressã¯URLãšã³ã³ãŒãããããã©ãŒã ãåç¬ã§åŠçã§ããŸããã ããã§ã¯ã以åã«ã€ã³ã¹ããŒã«ãããbody-parserããã±ãŒãžã圹ç«ã¡ãŸãã
// server.js const express = require('express'); const MongoClient = require('mongodb').MongoClient; const bodyParser = require('body-parser'); const app = express(); const port = 8000; app.use(bodyParser.urlencoded({ extended: true })); require('./app/routes')(app, {}); app.listen(port, () => { console.log('We are live on ' + port); });
ããã§ãPOSTãªã¯ãšã¹ããå®è¡ããåŸããã®æ¬æã¯ç«¯æ«ã§ãªããžã§ã¯ããšããŠèŠãããšãã§ããŸãã
{ title: 'My Note Title', body: 'What a great note.' }
æåã®ã«ãŒããå®å
šã«æ©èœããããã«ã¯ãããŒã¿ããŒã¹ãæ§æããŠã¡ã¢ã远å ããã ãã§ãã
ããŒã¿ããŒã¹ããã°ããäœæããŠæ§æããã«ã¯ã
mLabãµãŒãã¹ã䜿çšããŸãã ç°¡åã«äœ¿çšã§ããå°éã®æ
å ±ã«ã€ããŠã¯ç¡æã§ãã
mLabã§ã¢ã«ãŠã³ããäœæããæ°ããMongoDBããŒã¿ããŒã¹ãå±éããŸãã ãããè¡ãã«ã¯ã
MongoDB Deploymentsã»ã¯ã·ã§ã³ã®
Create Newãã¿ã³ãã¯ãªãã¯ãã衚瀺ããããŠã£ã³ããŠã®
Planã»ã¯ã·ã§ã³ã§ã
Single-nodeãéžæã
ãŸã ã [
æšæºè¡]ãªã¹ãã§ã[
ãµã³ãããã¯ã¹]ãéžæããããŒã¿ããŒã¹ã«ååãä»ããŸãã æ¬¡ã«ãããŒã¿ããŒã¹ç®¡çãŠã£ã³ããŠã§ã[
ãŠãŒã¶ãŒ ]ã¿ãã«ç§»åããååãšãã¹ã¯ãŒããæå®ããŠããŒã¿ããŒã¹ãŠãŒã¶ãŒã远å ããŸãã
æ°ããããŒã¿ããŒã¹ãŠãŒã¶ãŒåãããŒãžïŒããŒã¿ããŒã¹æ¥ç¶æååïŒãã2çªç®ã®URLãã³ããŒããŸãã
ããŒã¿ããŒã¹ã«æ¥ç¶ããããã®URLconfigãã£ã¬ã¯ããªããããžã§ã¯ãã«ãŒãã«è¿œå ãããã®äžã«
db.jsãã¡ã€ã«ãäœæããŸãã
mkdir config cd config touch db.js
以äžã
db.jsãã¡ã€ã«ã«è¿œå ããŸãã
module.exports = { url : URL };
ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããURLã«è¿œå ããããšãå¿ããªãã§ãã ããïŒmLabã¢ã«ãŠã³ãã®ãã®ã§ã¯ãªããããŒã¿ããŒã¹çšã«äœæããããã®ïŒã Githubã§ãããžã§ã¯ãããã¹ãããå Žåã¯ã
.gitignoreãã¡ã€ã«ïŒ
ãã®ãããªïŒãå¿
ãå«ããŠ
ãã ãã ã ãã®ãããããŒã¿ããŒã¹ãæäœããããã®ãããªãã¯ãã¡ã€ã³åãšãã¹ã¯ãŒãã¯äœæããŸããã
server.jsã§ã¯ãMongoClientã䜿çšããŠããŒã¿ããŒã¹ã«æ¥ç¶ããã¢ããªã±ãŒã·ã§ã³èšå®ãäœæãããšãã«ããŒã¿ããŒã¹ã«æž¡ããã颿°ãã©ããã§ããŸãã
// server.js const express = require('express'); const MongoClient = require('mongodb').MongoClient; const bodyParser = require('body-parser'); const db = require('./config/db'); const app = express(); const port = 8000; app.use(bodyParser.urlencoded({ extended: true })); MongoClient.connect(db.url, (err, database) => { if (err) return console.log(err) require('./app/routes')(app, database); app.listen(port, () => { console.log('We are live on ' + port); }); })
ããã§ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®æºåãå®äºããŸããã ããããã¯ããã¹ã®ã¿ãæ±ããŸãã
ããŒã¿ããŒã¹ãžã®ã¬ã³ãŒãã®è¿œå
MongoDBã¯ãååãå®å
šã«æ£åœåããã³ã¬ã¯ã·ã§ã³ã«ããŒã¿ãä¿åããŸãã ãã®å ŽåãããŒãã¯ã³ã¬ã¯ã·ã§ã³ã«ä¿åãããŸããã³ã¬ã¯ã·ã§ã³ã¯ããæ³åã®ãšããã
notes
ãšåŒã°ã
notes
ã
ã¯ã©ã€ã¢ã³ãã®ã»ããã¢ããäžã«ãããŒã¿ããŒã¹æ¥ç¶æååãæž¡ãããŸããã
db
åŒæ°ã çµè·¯ã³ãŒãã§ã¯ãããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ã¯æ¬¡ã®ããã«ååŸã§ããŸãã
db.collection('notes')
ããŒã¿ããŒã¹ã«ã¡ã¢ãäœæããããšã¯ã
notes
ã³ã¬ã¯ã·ã§ã³ã«å¯ŸããŠ
insert
ã³ãã³ããåŒã³åºãããšãšåãã§ãã
const note = { text: req.body.body, title: req.body.title} db.collection('notes').insert(note, (err, results) => { }
ã³ãã³ããæ£åžžã«å®äºããåŸïŒãŸãã¯äœããã®çç±ã§å®è¡ã§ããªãå ŽåïŒãæ°ããäœæãããããŒããªããžã§ã¯ããå¿çã§éä¿¡ãããããšã©ãŒã¡ãã»ãŒãžãéä¿¡ããå¿
èŠããããŸãã 以äžã¯ããããã®èæ
®äºé
ãèæ
®ããŠè£è¶³ããã
note_routes.jsã³ãŒãã§ãã
// note_routes.js module.exports = function(app, db) { app.post('/notes', (req, res) => { const note = { text: req.body.body, title: req.body.title }; db.collection('notes').insert(note, (err, result) => { if (err) { res.send({ 'error': 'An error has occurred' }); } else { res.send(result.ops[0]); } }); }); };
äœãèµ·ãã£ãããäœéšããŠãã ããã PostmanããïŒ
x-www-form-urlencodedãã©ã°ã䜿çšããŠïŒPOSTèŠæ±ãéä¿¡ãã[
æ¬æ ]ã¿ãã®
ã¿ã€ãã«ãš
æ¬æãã£ãŒã«ãã®å€ãèšå®ããŸãã
çãã¯æ¬¡ã®ããã«ãªããŸãã
ããŒã¿ããŒã¹ãžã®ã¬ã³ãŒãã®è¿œå ã«æåããŸããmLabã«ãã°ã€ã³ããŠããŒã¿ããŒã¹ãèŠããšãæ°ããäœæãããã¡ã¢ãèŠã€ããããšãã§ããŸãã
ã¡ã¢ãèªãïŒã«ãŒããèªã
äžèšã§æºåããã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãã¹ãŠã®ã«ãŒãã«é©ããŠãããããçŸåšã¯ããé«éã«ãªããŸãã
ãã®ããã
localhostãã¹
8000 / notes / {note id}ã«åŸã£ãŠãäœæããã°ããã®ã¡ã¢ãèŠæ±ããŸãã ãã®å Žåããã¹ã¯
localhostïŒ8000 / notes / 585182bd42ac5b07a9755ea3ã®ããã«ãªããŸãã
äœææžã¿ã®ã¡ã¢ã®IDããªãå Žåã¯ãmLabã§ããŒã¿ããŒã¹ãæ€çŽ¢ããŠãããèŠã€ããããæ°ããã¡ã¢ãäœæããŠãã®èå¥åãã³ããŒããŸãã
note_route.jsã§ã®
è¡šç€ºã¯æ¬¡ã®
ãšããã§ãã
// note_routes.js module.exports = function(app, db) { app.get('/notes/:id', (req, res) => { }); app.post('/notes', (req, res) => { const note = { text: req.body.body, title: req.body.title }; db.collection('notes').insert(note, (err, result) => { if (err) { res.send({ 'error': 'An error has occurred' }); } else { res.send(result.ops[0]); } }); }); };
åãšåãããã«ãããŒãããŒã¿ããŒã¹ãåéããã³ãã³ããåŒã³åºããŸãã ãã®ããã«
findOne
ã¡ãœãããé©çšããŸãã
// note_routes.js module.exports = function(app, db) { app.get('/notes/:id', (req, res) => { const details = { '_id': < ID> }; db.collection('notes').findOne(details, (err, item) => { if (err) { res.send({'error':'An error has occurred'}); } else { res.send(item); } }); }); app.post('/notes', (req, res) => { const note = { text: req.body.body, title: req.body.title }; db.collection('notes').insert(note, (err, result) => { if (err) { res.send({ 'error': 'An error has occurred' }); } else { res.send(result.ops[0]); } }); }); };
URLãã©ã¡ãŒã¿ãŒããã®èå¥åã¯ã
req.params.id
ã³ã³ã¹ãã©ã¯ãã䜿çšããŠ
req.params.id
ããšãã§ããŸãã ãã ããäžèšã®ã³ãŒããã<< >>ã®ä»£ããã«åçŽã«è¡ãæ¿å
¥ããå Žåãããã¯æ©èœããŸããã
MongoDBã«ã¯ãæååãšããŠã§ã¯ãªããç¹å¥ãªãªããžã§ã¯ããšããŠã®IDãå¿
èŠã§ãã ããã¯
ObjectIDãšåŒã°ã
ãŸã ã
å°ã倿ŽããåŸã次ã®ããã«ããŸããã
// note_routes.js var ObjectID = require('mongodb').ObjectID; module.exports = function(app, db) { app.get('/notes/:id', (req, res) => { const id = req.params.id; const details = { '_id': new ObjectID(id) }; db.collection('notes').findOne(details, (err, item) => { if (err) { res.send({'error':'An error has occurred'}); } else { res.send(item); } }); }); app.post('/notes', (req, res) => { const note = { text: req.body.body, title: req.body.title }; db.collection('notes').insert(note, (err, result) => { if (err) { res.send({ 'error': 'An error has occurred' }); } else { res.send(result.ops[0]); } }); }); };
ããŒã¿ããŒã¹ã§å©çšå¯èœãªããŒãèå¥åã®ããããã§è©ŠããŠãã ããã Postmanã®çãã¯æ¬¡ã®ããã«ãªããŸãã
ããŒã¿ããŒã¹ããã®ã¡ã¢ã®æ£åžžãªãªã¯ãšã¹ãã¡ã¢ãåé€ïŒã«ãŒããåé€
ãªããžã§ã¯ãã®åé€ã¯ãããŒã¿ããŒã¹ã§ã®æ€çŽ¢ãšã»ãŒåãã§ãã
findOne
颿°ã®ä»£ããã«ã®ã¿ã
remove
颿°ã䜿çšãããŸãã 以äžã¯ã察å¿ãããã¹ã®å®å
šãªã³ãŒãã§ãã ããã§åŒ·èª¿ãããã®ã¯ãGETãªã¯ãšã¹ããåŠçããæ¢åã®ã¡ãœããã®ã³ãŒããšã¯ç°ãªããšããããšã§ãã
// note_routes.js // ... app.delete('/notes/:id', (req, res) => { const id = req.params.id; const details = { '_id': new ObjectID(id) }; db.collection('notes').remove(details, (err, item) => { if (err) { res.send({'error':'An error has occurred'}); } else { res.send('Note ' + id + ' deleted!'); } }); }); // ...
æŽæ°ããŒãïŒã«ãŒãã®æŽæ°
ãããŠããããæåŸã®ã«ãŒãã§ãã PUTèŠæ±åŠçã¯ãåºæ¬çã«READæäœãšCREATEæäœã®ãã€ããªããã§ãã æåã«ãªããžã§ã¯ããèŠã€ããå¿
èŠããããæ¬¡ã«ãªã¯ãšã¹ãã§åä¿¡ããããŒã¿ã«åŸã£ãŠãªããžã§ã¯ããæŽæ°ããŸãã ããã§ã以åã®ã³ãŒããã©ã°ã¡ã³ããçµéšããå Žåãå¯äžã®ããŒããåé€ããŠãå¥ã®ããŒããäœæããŸãã
ã¡ã¢æŽæ°ã«ãŒãã³ãŒãã¯æ¬¡ã®ãšããã§ãã
// note_routes.js // ... app.put ('/notes/:id', (req, res) => { const id = req.params.id; const details = { '_id': new ObjectID(id) }; const note = { text: req.body.body, title: req.body.title }; db.collection('notes').update(details, note, (err, result) => { if (err) { res.send({'error':'An error has occurred'}); } else { res.send(note); } }); }); // ...
ããã§ãä»»æã®ã¡ã¢ãç·šéã§ããŸãã ããã¯æ¬¡ã®ãããªãã®ã§ãã
ã¡ã¢ãæŽæ°ããŸãããã®äŸã®æ¬ é¥ã«æ³šæããŠãã ããã PUTãªã¯ãšã¹ãã«æ¬æãŸãã¯ã¿ã€ãã«ããªãå ŽåãããŒã¿ããŒã¹å
ã®å¯Ÿå¿ãããã£ãŒã«ãã¯åçŽã«ã¯ãªã¢ãããŸãã
远å ã®ãã§ãã¯ãå«ãäŸãããŒãããŸããã§ããã å¿
èŠã«å¿ããŠãèŠæ±ãæ£ãã圢æãããå Žåã«ã®ã¿ãããŒã¿ããŒã¹ã«æ°ããããŒã¿ã远å ããããšã«ãããããŒãã®æŽæ°æäœãå®äºã§ããŸãã
ãŸãšã
ããã§ã4ã€ã®åºæ¬çãªCRUDæäœããµããŒãããæå¹ãªNode APIãã§ããŸããã ã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒéšåã¯ãã¯ã©ã€ã¢ã³ãã®HTTPãªã¯ãšã¹ãã«å¿ããŠãããŒã¿ããŒã¹ã«ã¡ã¢ãäœæããããããèŠã€ããåé€ããç·šéããããšãã§ããŸãã
ç§ã®è©±ã®äž»ãªç®æšã¯ãNode + Express + MongoDBã®æãšãµãŒããŒã¢ããªã±ãŒã·ã§ã³éçºã®æ¹æ³è«ãå
šå¡ã«ç¥ãããããšã§ãã ãã¡ããã仿¥ãããã®ããŒã«ãåããŠç¥ã£ãå Žåã¯ããã¹ãŠãããããçè§£ããããã«ãããã¥ã¡ã³ããèªãå¿
èŠããããŸãã ãã ããäœãèµ·ãã£ãŠããã®ããçè§£ããããšã§ãããã§äœæ¥ããã¢ããªã±ãŒã·ã§ã³ãåºçºç¹ãšããŠãç¥èã®ã®ã£ãããããã«åããç¬èªã®ãããžã§ã¯ãã§äœæ¥ãéå§ã§ããŸãã
å®éã®ãããžã§ã¯ãã§Node.jsãExpressãããã³MongoDBã®äœ¿çšçµéšãããå Žåã¯ãåå¿è
ã«åœ¹ç«ã€ãã®ããå§ãããŸããïŒ ãããŠãããããã¹ãŠãåããŠè©Šããã°ããã®å Žå-ããªãã®å°è±¡ãåŸ
ã£ãŠããŸãã