Book Directory project in Node fundamentals
Asked by Anurag Gupta about 2 years ago
3
I can not clear all challenges in the Book directory project in the end of Node fundamentals. Here's my Api.js file. Can someone tell me what's wrong?
const router = require('express').Router()
const books = require('./data')
const fs = require('fs')
let booksDirectory = books
router.get('/reset', function (req, res) {
booksDirectory = books
res.send('ok')
})
router.get('/books', function (req, res) {
res.json(booksDirectory)
})
router.get('/books/:id', function (req, res) {
let flag = true
booksDirectory.map(book => {
if (req.params.id === book.isbn) {
flag = false
res.json(book)
}
})
if (flag) {
res.status(404).json({
'success': false,
'message': `Not found`,
})
}
})
router.post('/books', function (req, res) {
const {
title,
isbn,
pageCount,
publishedDate,
thumbnailUrl,
shortDescription,
longDescription,
status,
authors,
categories,
} = req.body
const json = {
'title': title,
'isbn': isbn,
'pageCount': pageCount,
'publishedDate': publishedDate,
'thumbnailUrl': thumbnailUrl,
'shortDescription': shortDescription,
'longDescription': longDescription,
'status': status,
'authors': authors,
'categories': categories
}
booksDirectory.concat(json)
fs.writeFileSync('./data.js', `module.exports = ${JSON.stringify(booksDirectory)}`)
res.json(booksDirectory)
})
router.put('/books/:id', function (req, res) {
const { id } = req.params
let flag = true
const {
title,
isbn,
pageCount,
publishedDate,
thumbnailUrl,
shortDescription,
longDescription,
status,
authors,
categories,
} = req.body
booksDirectory.map(book => {
if (req.params.id === book.isbn) {
flag = false
if (title) book.title = title
if (isbn) book.isbn = isbn
if (pageCount) book.pageCount = pageCount
if (publishedDate) book.publishedDate = publishedDate
if (thumbnailUrl) book.thumbnailUrl = thumbnailUrl
if (shortDescription) book.shortDescription = shortDescription
if (longDescription) book.longDescription = longDescription
if (status) book.status = status
if (authors) book.authors = authors
if (categories) book.categories = categories
}
})
fs.writeFileSync('./data.js', `module.exports = ${JSON.stringify(booksDirectory)}`)
if (flag) {
res.status(404).json({
'success': false,
'message': `Not found`,
})
}
})
router.delete('/books/:id', function (req, res) {
// add code
booksDirectory = booksDirectory.filter(book => req.params.id !== book.isbn)
fs.writeFileSync('./data.js', `module.exports = ${JSON.stringify(booksDirectory)}`)
})
module.exports = router
1 Answer
2
First of all, after some tweaks, the end-points work in my local environment. So, one case could be that, the codedamn checker program needs some specific format to pass a test case. This inturn makes sense. But, even if I don't make any changes and simply keep checking, I get different evaluation every time. Once it show 2 passed then another reload 5 test cases and so on.
Some thing similar happened in tiktok exercises. So, yea I'm marking it as completeeven though only 4/6 cases passed
show more answers
Your answer