just organize my books - library management app
- create
/jomb/server/config/dev.json
file with the following boilerplate:
{
"DBHost": ""
}
Add your MongoDB connection string. You can also add a test.json
file in this folder to run the backend tests.
- cd into /jomb/client and run
npm install
- cd into /jomb/server and run
npm install
, then runyarn dev
ornpm run dev
to boot up both express and react servers.
Add Change History middleware to server.js routing
const { addChangeHistoryEvent } = require("./handlers/changeHistory");
...
app.route("/api/book").post(bookController.addBook, addChangeHistoryEvent);
The action that addChangeHistoryEvent
will add to the database is defined within bookController.addBook
, so we don't need to worry about it here.
Next, let's update the bookController.addBook method to implement next()
. Only add next()
when express should continue to add a change history log (ie: on success only).
exports.addBook = async (req, res, next) => {
// all the logic of adding a book and error handling
// then we add the necessary data to the request
// and send it on to the addChangeHistoryToBook method.
// errorNumber, message, and book will be sent to the UI
// action and description are used to add the
// change history to the mongo table they are stored in
req.transportToUI = {
errorNumber: SUCCESS,
message: "Book successfully added!",
book
};
req.changeHistoryData = {
description: ADD,
detail: "Added book to library",
bookId: book._id
};
next();
}
Everything within the transportToUI
object will be passed back to the UI via res.json()
in the addChangeHistoryEvent
method.
The addChangeHistoryEvent
will return an object like below to the UI:
{
"transportToUI": {
"errorNumber": 0,
"message": "Book successfully added!",
"book": {
"authors": [
"Kim Golombisky",
"Rebecca Hagen"
],
"tags": [],
"location": [],
"_id": "5b9eac7855ce51144c74885b",
"isbn": "1138804649",
"addedOn": "2018-09-16T19:18:16.729Z",
"title": "White Space Is Not Your Enemy",
"__v": 0
}
},
"changeHistory": {
"errorNumber": 0,
"message": "Successfully added change history event to book"
}
}
See the jomb/server/models/constants.js
file for an up-to-date list of error numbers