mirror of
https://github.com/usatiuk/ustk-todolist.git
synced 2025-10-28 07:37:49 +01:00
api fixes
This commit is contained in:
1
app.js
1
app.js
@@ -8,6 +8,7 @@ require('./models/TodoList');
|
||||
require('./models/Todo');
|
||||
|
||||
app.use('/lists', require('./routes/lists'));
|
||||
app.use('/todos', require('./routes/todos'));
|
||||
|
||||
// 404 route
|
||||
app.use((req, res) => {
|
||||
|
||||
@@ -2,13 +2,15 @@ const express = require('express');
|
||||
const bodyParser = require('body-parser');
|
||||
const methodOverride = require('method-override');
|
||||
const morgan = require('morgan');
|
||||
const cors = require('cors');
|
||||
|
||||
const app = express();
|
||||
|
||||
app.use(bodyParser.urlencoded({ extended: false }));
|
||||
app.use(bodyParser.json());
|
||||
app.use(cors());
|
||||
|
||||
app.use(morgan('tiny'));
|
||||
app.use(morgan('dev'));
|
||||
|
||||
app.use(methodOverride('_method'));
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ TodoSchema.methods.toJson = function () {
|
||||
id: this._id.toString(),
|
||||
text: this.text,
|
||||
list: this.list.toString(),
|
||||
completed: this.completed,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
32
package-lock.json
generated
32
package-lock.json
generated
@@ -1649,6 +1649,15 @@
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
|
||||
"dev": true
|
||||
},
|
||||
"cors": {
|
||||
"version": "2.8.4",
|
||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz",
|
||||
"integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=",
|
||||
"requires": {
|
||||
"object-assign": "^4",
|
||||
"vary": "^1"
|
||||
}
|
||||
},
|
||||
"create-error-class": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
|
||||
@@ -4621,11 +4630,6 @@
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"kareem": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.0.7.tgz",
|
||||
"integrity": "sha512-p8+lEpsNs4N0fvNOC1/zzDO0wDrD3Pb1G+OwfIG+gKVK3MyY5jeaGYh+9Qx6jb4fEG2b3E6U98vaE9MH7Gilsw=="
|
||||
},
|
||||
"kind-of": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
||||
@@ -4970,13 +4974,13 @@
|
||||
}
|
||||
},
|
||||
"mongoose": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.1.1.tgz",
|
||||
"integrity": "sha512-pmVX//61yX8hV/Db790Cym8CGYd29OYQROYx6ve6ab4LbUW0+GehiBVDlnE9Tvogaz8nndHlVUb+iXwOBw/MNw==",
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.1.2.tgz",
|
||||
"integrity": "sha512-k9hssPMgBnUYG5e9NoUbx/2ERDyelDY0Vf6BwjtmoETUhVT7pQUe1o+oelLLuHF3ZVY2qgienK8pnrI5pdvlxA==",
|
||||
"requires": {
|
||||
"async": "2.1.4",
|
||||
"bson": "~1.0.5",
|
||||
"kareem": "2.0.7",
|
||||
"kareem": "2.1.0",
|
||||
"lodash.get": "4.4.2",
|
||||
"mongodb": "3.0.8",
|
||||
"mongoose-legacy-pluralize": "1.0.2",
|
||||
@@ -4985,6 +4989,13 @@
|
||||
"ms": "2.0.0",
|
||||
"regexp-clone": "0.0.1",
|
||||
"sliced": "1.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"kareem": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.1.0.tgz",
|
||||
"integrity": "sha512-ycoMY1tVkcH1/NaxGn2erZaUC3CodmX7Fl6DUVXjN73+uecWYTaaldRkxNY3HeSKQnQTWnoxRKnZfVHcB8tIWg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"mongoose-legacy-pluralize": {
|
||||
@@ -10330,8 +10341,7 @@
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
|
||||
"dev": true
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||
},
|
||||
"object-copy": {
|
||||
"version": "0.1.0",
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"author": "",
|
||||
"dependencies": {
|
||||
"body-parser": "^1.18.3",
|
||||
"cors": "^2.8.4",
|
||||
"dotenv": "^5.0.1",
|
||||
"express": "^4.16.3",
|
||||
"method-override": "^2.3.10",
|
||||
|
||||
@@ -27,7 +27,7 @@ router.post(
|
||||
const { name } = req.body;
|
||||
const newList = new TodoList({ name });
|
||||
await newList.save();
|
||||
res.json({ success: true });
|
||||
res.json({ success: true, data: newList.toJson() });
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -53,7 +53,7 @@ router.patch(
|
||||
const { listId } = res.locals;
|
||||
const { name } = req.body;
|
||||
const patch = {};
|
||||
if (name) {
|
||||
if (name !== undefined) {
|
||||
patch.name = name;
|
||||
}
|
||||
const list = await TodoList.findByIdAndUpdate(
|
||||
@@ -63,7 +63,7 @@ router.patch(
|
||||
).exec();
|
||||
await list.slugify();
|
||||
await list.save();
|
||||
res.json({ success: true });
|
||||
res.json({ success: true, data: list.toJson() });
|
||||
}),
|
||||
);
|
||||
router.use('/:slug/todos', listIdMiddleware, require('./todos'));
|
||||
|
||||
@@ -12,7 +12,7 @@ const { NotFoundError } = require('../errors');
|
||||
router.get(
|
||||
'/',
|
||||
asyncHelper(async (req, res) => {
|
||||
const { listId } = res.locals;
|
||||
const { listId } = res.locals || req.body;
|
||||
const todos = await Todo.find({ list: listId }).exec();
|
||||
res.json({ success: true, data: todos.map(todo => todo.toJson()) });
|
||||
}),
|
||||
@@ -22,11 +22,12 @@ router.get(
|
||||
router.post(
|
||||
'/',
|
||||
asyncHelper(async (req, res) => {
|
||||
const { listId } = res.locals;
|
||||
const { listId } = res.locals || req.body;
|
||||
const { text } = req.body;
|
||||
console.log(req.body);
|
||||
const todo = new Todo({ text, list: listId });
|
||||
await todo.save();
|
||||
res.json({ success: true });
|
||||
res.json({ success: true, data: todo.toJson() });
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -37,14 +38,21 @@ router.patch(
|
||||
const { todoId } = req.params;
|
||||
const { text, completed } = req.body;
|
||||
const patch = {};
|
||||
if (text) {
|
||||
if (text !== undefined) {
|
||||
patch.text = text;
|
||||
}
|
||||
if (completed) {
|
||||
if (completed !== undefined) {
|
||||
patch.completed = completed;
|
||||
}
|
||||
await Todo.update({ _id: todoId }, { $set: patch }).exec();
|
||||
res.json({ success: true });
|
||||
const todo = await Todo.findByIdAndUpdate(
|
||||
{ _id: todoId },
|
||||
{ $set: patch },
|
||||
{ new: true },
|
||||
).exec();
|
||||
if (!todo) {
|
||||
throw new NotFoundError(`can't find todo with id ${todoId}`);
|
||||
}
|
||||
res.json({ success: true, data: todo.toJson() });
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -55,7 +63,7 @@ router.delete(
|
||||
const { todoId } = req.params;
|
||||
const todo = await Todo.findById(todoId).exec();
|
||||
if (!todo) {
|
||||
throw new NotFoundError('cant find todo');
|
||||
throw new NotFoundError(`can't find todo with id ${todoId}`);
|
||||
}
|
||||
await todo.remove();
|
||||
res.json({ success: true });
|
||||
|
||||
Reference in New Issue
Block a user