Skip to content
Snippets Groups Projects
Commit 9faed765 authored by Viivi Nevalainen's avatar Viivi Nevalainen
Browse files

Upload New File

parent a6a67cf0
No related branches found
No related tags found
No related merge requests found
const blogsRouter = require('express').Router()
const Blog = require('../models/blog')
const User = require('../models/user')
const jwt = require('jsonwebtoken')
//asyncia käyttävät metodit:
blogsRouter.get('/', async (request, response) => {
const blogs = await Blog
.find({}).populate('user', { username: 1, name: 1} )
response.json(blogs)
})
const getTokenFrom = request => {
const authorization = request.get('authorization')
if (authorization && authorization.toLowerCase().startsWith('bearer ')) {
return authorization.substring(7)
}
return null
}
//blogin lisäys token-autentikoinnin avulla:
blogsRouter.post('/', async (request, response) => {
const body = request.body
//mikäli token on väärä tai sitä ei ole, tulostetaan viesti
const token = getTokenFrom(request)
const decodedToken = jwt.verify(token, process.env.SECRET)
if (!token || !decodedToken.id) {
return response.status(401).json({ error: 'token missing or invalid' })
}
const user = await User.findById(decodedToken.id)
const blog = new Blog({
title: body.title,
author: body.author,
url: body.url,
likes: body.likes,
user: user._id
})
const savedBlog = await blog.save()
user.blogs = user.blogs.concat(savedBlog._id)
await user.save()
response.json(savedBlog.toJSON())
})
blogsRouter.delete('/:id', async (request, response) => {
await Blog.findByIdAndRemove(request.params.id)
response.status(204).end()
})
blogsRouter.put('/:id', async (request, response) => {
const body = request.body
const likes = {
likes: body.likes
}
const updatedBlog = await Blog.findByIdAndUpdate(request.params.id, likes, { new: body.likes })
response.json(updatedBlog)
})
/*
//blogin lisäys aiemmissa tehtävissä ennen tokenin määritystä:
blogsRouter.post('/', async (request, response) => {
const body = request.body
//määritellään jokaisen lisäyksen yhteyteen käyttäjän määrittely
const user = await User.findById(body.userId)
const blog = new Blog({
title: body.title,
author: body.author,
url: body.url,
likes: body.likes,
user: user._id
})
const savedBlog = await blog.save()
user.blogs = user.blogs.concat(savedBlog._id)
await user.save()
response.status(201).json(savedBlog)
})
//promiseja käyttävät metodit:
blogsRouter.put('/:id', (request, response, next) => {
const body = request.body
const likes = {
likes: body.likes
}
Blog.findByIdAndUpdate(request.params.id, likes, { new: body.likes })
.then(updatedBlog => {
response.json(updatedBlog)
})
.catch(error => next(error))
})
blogsRouter.get('/', (request, response) => {
Blog.find(request.params).then(blogs => {
response.json(blogs)
})
})
blogsRouter.post('/', (request, response, next) => {
const body = request.body
if (!body.title) {
return response.status(400).json({
error: 'title missing'
})
}
const blog = new Blog({
title: body.title,
author: body.author,
url: body.url,
likes: body.likes
})
blog.save().then(savedBlog => {
response.json(savedBlog)
})
.catch(error => next(error))
})
*/
module.exports = blogsRouter
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment