Video 89: Resource Creation Endpoints: Part I
This commit is contained in:
parent
a340b108f1
commit
97ae98972b
@ -1,30 +0,0 @@
|
|||||||
// CRUD create read update delete
|
|
||||||
|
|
||||||
const { MongoClient, ObjectID } = require('mongodb')
|
|
||||||
|
|
||||||
const connectionURL = 'mongodb://127.0.0.1:27017'
|
|
||||||
const databaseName = 'task-manager'
|
|
||||||
|
|
||||||
MongoClient.connect(connectionURL, { useNewUrlParser: true }, (error, client) => {
|
|
||||||
if (error) {
|
|
||||||
return console.log('Unable to connect to database!')
|
|
||||||
}
|
|
||||||
|
|
||||||
const db = client.db(databaseName)
|
|
||||||
|
|
||||||
// db.collection('users').deleteMany({
|
|
||||||
// age: 38
|
|
||||||
// }).then((result) => {
|
|
||||||
// console.log(result)
|
|
||||||
// }).catch((error) => {
|
|
||||||
// console.log(error)
|
|
||||||
// })
|
|
||||||
|
|
||||||
db.collection('tasks').deleteOne({
|
|
||||||
description: 'Install MongoDB'
|
|
||||||
}).then((result) => {
|
|
||||||
console.log(result)
|
|
||||||
}).catch((error) => {
|
|
||||||
console.log(error)
|
|
||||||
})
|
|
||||||
})
|
|
2909
task-manager/package-lock.json
generated
2909
task-manager/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -4,14 +4,19 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"start": "node src/index.js",
|
||||||
|
"dev": "nodemon src/index.js"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"express": "^4.16.4",
|
||||||
"mongodb": "^3.1.10",
|
"mongodb": "^3.1.10",
|
||||||
"mongoose": "^5.3.16",
|
"mongoose": "^5.3.16",
|
||||||
"validator": "^10.9.0"
|
"validator": "^10.9.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"nodemon": "^1.18.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,62 +1,10 @@
|
|||||||
const mongoose = require('mongoose')
|
const mongoose = require('mongoose')
|
||||||
const validator = require('validator')
|
|
||||||
|
|
||||||
mongoose.connect('mongodb://localhost:27017/task-manager-api', {
|
mongoose.connect('mongodb://localhost:27017/task-manager-api', {
|
||||||
useNewUrlParser: true,
|
useNewUrlParser: true,
|
||||||
useCreateIndex: true
|
useCreateIndex: true
|
||||||
})
|
})
|
||||||
|
|
||||||
const User = mongoose.model('User', {
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
email: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true,
|
|
||||||
lowercase: true,
|
|
||||||
validate(value) {
|
|
||||||
if (!validator.isEmail(value)) {
|
|
||||||
throw new Error('Email is invalid')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
password: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
minlength: 7,
|
|
||||||
trim: true,
|
|
||||||
validate(value) {
|
|
||||||
if (value.toLowerCase().includes('password')) {
|
|
||||||
throw new Error('Password cannot contain "password"')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
age: {
|
|
||||||
type: Number,
|
|
||||||
default: 0,
|
|
||||||
validate(value) {
|
|
||||||
if (value < 0) {
|
|
||||||
throw new Error('Age must be a positive number')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// const me = new User({
|
|
||||||
// name: ' Jason ',
|
|
||||||
// email: 'J@SON-WILLIAMS.CA ',
|
|
||||||
// password: 'testpassw0rd'
|
|
||||||
// })
|
|
||||||
//
|
|
||||||
// me.save().then(() => {
|
|
||||||
// console.log(me)
|
|
||||||
// }).catch((error) => {
|
|
||||||
// console.log('Error!', error)
|
|
||||||
// })
|
|
||||||
|
|
||||||
const Task = mongoose.model('Task', {
|
const Task = mongoose.model('Task', {
|
||||||
description: {
|
description: {
|
||||||
type: String,
|
type: String,
|
||||||
@ -68,13 +16,3 @@ const Task = mongoose.model('Task', {
|
|||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const task = new Task({
|
|
||||||
description: ' Eat lunch '
|
|
||||||
})
|
|
||||||
|
|
||||||
task.save().then(() => {
|
|
||||||
console.log(task);
|
|
||||||
}).catch((error) => {
|
|
||||||
console.log('Error!', error)
|
|
||||||
})
|
|
||||||
|
22
task-manager/src/index.js
Normal file
22
task-manager/src/index.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
const express = require('express')
|
||||||
|
require('./db/mongoose')
|
||||||
|
const User = require('./models/user')
|
||||||
|
|
||||||
|
const app = express()
|
||||||
|
const port = process.env.PORT || 4200
|
||||||
|
|
||||||
|
app.use(express.json())
|
||||||
|
|
||||||
|
app.post('/users', (req, res) => {
|
||||||
|
const user = new User(req.body)
|
||||||
|
|
||||||
|
user.save().then(() => {
|
||||||
|
res.send(user)
|
||||||
|
}).catch((e) => {
|
||||||
|
res.status(400).send(e)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
app.listen(port, () => {
|
||||||
|
console.log('Server is up on port ' + port)
|
||||||
|
})
|
43
task-manager/src/models/user.js
Normal file
43
task-manager/src/models/user.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
const mongoose = require('mongoose')
|
||||||
|
const validator = require('validator')
|
||||||
|
|
||||||
|
const User = mongoose.model('User', {
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
trim: true
|
||||||
|
},
|
||||||
|
email: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
trim: true,
|
||||||
|
lowercase: true,
|
||||||
|
validate(value) {
|
||||||
|
if (!validator.isEmail(value)) {
|
||||||
|
throw new Error('Email is invalid')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
password: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
minlength: 7,
|
||||||
|
trim: true,
|
||||||
|
validate(value) {
|
||||||
|
if (value.toLowerCase().includes('password')) {
|
||||||
|
throw new Error('Password cannot contain "password"')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
age: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
validate(value) {
|
||||||
|
if (value < 0) {
|
||||||
|
throw new Error('Age must be a positive number')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = User
|
Loading…
Reference in New Issue
Block a user