Files
storage-manager/server/server.js
T
2020-07-11 03:04:26 -05:00

78 lines
2.0 KiB
JavaScript

const express = require('express');
const mongoose = require('mongoose');
const app = express();
const cors = require('cors');
app.use(cors(), express.json());
const port = process.env.PORT || 5000;
const MONGO_IP_ADDRESS = '192.168.1.2';
mongoose.connect(`mongodb://${MONGO_IP_ADDRESS}/storage`, {useNewUrlParser: true});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log(`connected to mongodb: ${MONGO_IP_ADDRESS}`);
});
/*------------MODELS------------*/
//create schema
var itemSchema = new mongoose.Schema({
name: String,
quantity: Number,
description: String,
});
var boxSchema = new mongoose.Schema({
id: String,
name: String,
description: String,
item: [itemSchema],
});
//compile schema into model
var Box = mongoose.model('box', boxSchema, 'box');
/*------------/MODELS------------*/
/*------------CONTROLLER------------*/
app.listen(port, () => console.log(`Listening on port ${port}`));
// get all boxes
app.get('/box', async (request, response) => {
const boxes = await getAllBoxes();
response.send(boxes);
});
// create new box
app.post('/box', async (request, response) => {
Box.create(request.body, (error, document) => {
if(error) return request.next(error);
return document;
});
const updatedBoxes = await getAllBoxes();
response.send(updatedBoxes);
});
//delete box
app.delete('/box/:id', async (request, response) => {
Box.deleteOne({_id: request.params.id}, (error, document) => {
if(error)return null;
return document;
});
const updatedBoxes = await getAllBoxes();
response.send(updatedBoxes);
})
/*------------/CONTROLLER------------*/
const getAllBoxes = async (queryParameters) => {
queryParameters = queryParameters ?? {};
const data = Box.find(queryParameters, (error, document) => {
if(error) return null;
return document;
});
return data;
}