From eea4f06419a4238929cd0f674443b43377a86591 Mon Sep 17 00:00:00 2001 From: Yutsuo Date: Fri, 24 Jan 2020 13:06:19 -0300 Subject: [PATCH] update --- package-lock.json | 141 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 8 ++- src/app.js | 15 ----- src/bin/www.js | 89 ---------------------------- src/routes/index.js | 8 --- src/server.js | 82 ++++++++++++++++++++++---- src/todo.model.js | 18 ++++++ 7 files changed, 236 insertions(+), 125 deletions(-) delete mode 100644 src/app.js delete mode 100755 src/bin/www.js delete mode 100644 src/routes/index.js create mode 100644 src/todo.model.js diff --git a/package-lock.json b/package-lock.json index 8085107..b541031 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1160,6 +1160,11 @@ "file-uri-to-path": "1.0.0" } }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, "body-parser": { "version": "1.18.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", @@ -1243,6 +1248,11 @@ "node-releases": "^1.1.44" } }, + "bson": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.3.tgz", + "integrity": "sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg==" + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -3100,6 +3110,11 @@ "minimist": "^1.2.0" } }, + "kareem": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", + "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -3222,6 +3237,12 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -3314,6 +3335,47 @@ } } }, + "mongodb": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.4.1.tgz", + "integrity": "sha512-juqt5/Z42J4DcE7tG7UdVaTKmUC6zinF4yioPfpeOSNBieWSK6qCY+0tfGQcHLKrauWPDdMZVROHJOa8q2pWsA==", + "requires": { + "bson": "^1.1.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, + "mongoose": { + "version": "5.8.9", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.8.9.tgz", + "integrity": "sha512-gRazoLTQ0yuv4bk2z+nZEarKCyJ7WilFBkgrRqpOczUZUhk3i/FCe0rp8Mjc87dGXaHx54j8AjPJ0UKqJDXWMA==", + "requires": { + "bson": "~1.1.1", + "kareem": "2.3.1", + "mongodb": "3.4.1", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.6.0", + "mquery": "3.2.2", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "safe-buffer": "5.1.2", + "sift": "7.0.1", + "sliced": "1.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + }, "morgan": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", @@ -3326,6 +3388,33 @@ "on-headers": "~1.0.1" } }, + "mpath": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.6.0.tgz", + "integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw==" + }, + "mquery": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", + "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3868,6 +3957,11 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -4014,6 +4108,11 @@ "safe-regex": "^1.1.0" } }, + "regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, "regexpu-core": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", @@ -4091,6 +4190,15 @@ "dev": true, "optional": true }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, "resolve": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", @@ -4099,6 +4207,11 @@ "path-parse": "^1.0.6" } }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -4141,6 +4254,15 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -4234,6 +4356,11 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" }, + "sift": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -4246,6 +4373,11 @@ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -4408,6 +4540,15 @@ "dev": true, "optional": true }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", diff --git a/package.json b/package.json index 3411965..b0cc6d9 100644 --- a/package.json +++ b/package.json @@ -10,16 +10,18 @@ "clean": "rimraf dist", "build": "babel ./src --out-dir dist", "prod": "NODE_ENV=production npm-run-all clean build server:prod", - "watch": "nodemon" + "watch": "nodemon --exitcrash" }, "dependencies": { "cookie-parser": "~1.4.4", + "cors": "^2.8.5", "debug": "~2.6.9", "express": "~4.16.1", + "mongoose": "^5.8.9", "morgan": "~1.9.1", "npm-run-all": "^4.1.5", - "rimraf": "^3.0.0", - "cors": "^2.8.5" + "prettier": "^1.19.1", + "rimraf": "^3.0.0" }, "devDependencies": { "@babel/cli": "^7.8.3", diff --git a/src/app.js b/src/app.js deleted file mode 100644 index db8913a..0000000 --- a/src/app.js +++ /dev/null @@ -1,15 +0,0 @@ -// app.js - -import express from 'express'; -import path from 'path'; -import cookieParser from 'cookie-parser'; -import logger from 'morgan'; -import indexRouter from './routes/index'; -const app = express(); -app.use(logger('dev')); -app.use(express.json()); -app.use(express.urlencoded({ extended: false })); -app.use(cookieParser()); -app.use(express.static(path.join(__dirname, '../public'))); -app.use('/', indexRouter); -export default app; \ No newline at end of file diff --git a/src/bin/www.js b/src/bin/www.js deleted file mode 100755 index 4093938..0000000 --- a/src/bin/www.js +++ /dev/null @@ -1,89 +0,0 @@ -// bin/www.js -/** - * Module dependencies. - */ -import app from '../app'; -import debugLib from 'debug'; -import http from 'http'; -const debug = debugLib('es6-nodejs:server'); - -/** - * Get port from environment and store in Express. - */ - -var port = normalizePort(process.env.PORT || '3000'); -app.set('port', port); - -/** - * Create HTTP server. - */ - -var server = http.createServer(app); - -/** - * Listen on provided port, on all network interfaces. - */ - -server.listen(port); -server.on('error', onError); -server.on('listening', onListening); - -/** - * Normalize a port into a number, string, or false. - */ - -function normalizePort(val) { - var port = parseInt(val, 10); - - if (isNaN(port)) { - // named pipe - return val; - } - - if (port >= 0) { - // port number - return port; - } - - return false; -} - -/** - * Event listener for HTTP server "error" event. - */ - -function onError(error) { - if (error.syscall !== 'listen') { - throw error; - } - - var bind = typeof port === 'string' - ? 'Pipe ' + port - : 'Port ' + port; - - // handle specific listen errors with friendly messages - switch (error.code) { - case 'EACCES': - console.error(bind + ' requires elevated privileges'); - process.exit(1); - break; - case 'EADDRINUSE': - console.error(bind + ' is already in use'); - process.exit(1); - break; - default: - throw error; - } -} - -/** - * Event listener for HTTP server "listening" event. - */ - -function onListening() { - var addr = server.address(); - var bind = typeof addr === 'string' - ? 'pipe ' + addr - : 'port ' + addr.port; - debug('Listening on ' + bind); -} diff --git a/src/routes/index.js b/src/routes/index.js deleted file mode 100644 index cd0f712..0000000 --- a/src/routes/index.js +++ /dev/null @@ -1,8 +0,0 @@ -// routes/index.js -import express from 'express'; -var router = express.Router(); -/* GET home page. */ -router.get('/', function(req, res, next) { - res.render('index', { title: 'Express' }); -}); -export default router; \ No newline at end of file diff --git a/src/server.js b/src/server.js index 85070ff..1277e0a 100644 --- a/src/server.js +++ b/src/server.js @@ -1,13 +1,75 @@ -import express from 'express'; -import bodyParser from 'body-parser'; -import cors from 'cors'; +import express from 'express' +import bodyParser from 'body-parser' +import cors from 'cors' +import mongoose from 'mongoose' -const app = express(); -const PORT = 4000; +import Todo from './todo.model' -app.use(cors()); -app.use(bodyParser.json()); +const app = express() +const PORT = 4000 -app.listen(PORT, function() { - console.log("Server is running on Port: " + PORT); -}); +app.use(cors()) +app.use(bodyParser.json()) + +app.listen(PORT, function () { + console.log("Server is running on Port: " + PORT) +}) + +mongoose.connect('mongodb://localhost:27017/todos?authSource=admin', { + useNewUrlParser: true, + useUnifiedTopology: true, + user: "mongodbUser", + pass: "mongodbPass" +}) + +const connection = mongoose.connection + +connection.on('error', console.error.bind(console, 'connection error:')) +connection.once('open', function () { + console.log('Connected successfully to mongodb server') +}) + +const todoRoutes = express.Router() + +app.use('/todos', todoRoutes) + +todoRoutes.route('/').get((req, res) => { + Todo.find((err, todos) => { + if (err) { + console.log(err) + } else { + res.json(todos) + } + }) +}) + +todoRoutes.route('/:id').get((req, res) => { + let id = req.params.id + Todo.findById(id, (err, todo) => { + res.json(todo) + }) +}) + +todoRoutes.route('/add').post((req, res) => { + let todo = new Todo(req.body) + todo.save() + .then(todo => { res.status(200).json({ 'todo': 'todo added successfully' }) }) + .catch(err => { res.status(400).send('adding new todo failed') }) +}) + +todoRoutes.route('/update:id').post((req, res) => { + Todo.findById(req.params.id, (err, todo) => { + if (!todo) { + res.status(404).send("data is not found") + } else { + todo.todo_description = req.body.todo_description + todo.todo_responsible = req.body.todo_responsible + todo.todo_priority = req.body.todo_priority + todo.todo_completed = req.body.todo_completed + + todo.save() + .then(todo => res.json('Todo updated!')) + .catch(err => res.status(400).send("Error while updating")) + } + }) +}) diff --git a/src/todo.model.js b/src/todo.model.js new file mode 100644 index 0000000..04b6d4e --- /dev/null +++ b/src/todo.model.js @@ -0,0 +1,18 @@ +import mongoose from 'mongoose' + +const Schema = mongoose.Schema + +// Everything in Mongoose starts with a Schema. +// Each schema maps to a MongoDB collection and defines the shape of the documents within that collection. + +let Todo = new Schema({ + todo_description: { type: String }, + todo_responsible: { type: String }, + todo_priority: { type: String }, + todo_completed: { type: Boolean } +}) + +// Models are fancy constructors compiled from Schema definitions. An instance of a model is called a document. +// Models are responsible for creating and reading documents from the underlying MongoDB database. + +module.exports = mongoose.model('Todo', Todo)