GET http://localhost:5000/api/customerOrder/141798 500 (Internal Server Error) In React+Node+SQL Server application

Viewed 40

In my React+Node+SQL Server application I get this error

GET http://localhost:5000/api/customerOrder/141798 500 (Internal Server Error)

I have setup my endpoint urls in the server as follows:

dboperations.js

var config = require('./dbconfig');
const sql = require('mssql');
const { response } = require('express');

async function getallcustomerOrders(){
    try{
        let pool = await sql.connect(config);
        let orders = await pool.request()
            .query("SELECT * FROM [100].[dbo].[OELINCMT_SQL] order by ID desc");
        return orders.recordsets;
    }
    catch (error){
        console.log(error);
    }
}

async function getcustomerOrders(orderNumber) {
    try {
        let pool = await sql.connect(config);
        let orders = await pool.request()
            .input('input_parameter', sql.NChar, orderNumber)
            .query("SELECT ID,cmt FROM [100].[dbo].[OELINCMT_SQL] where LTRIM(ord_no) = LTRIM(@input_parameter)");
        return orders.recordsets;
    }
    catch (error) {
        console.log(error);
    }
}

async function updateComments(ID) {
    try {
        let pool = await sql.connect(config);
        let orders = await pool.request()
            .input('ID', sql.NChar, ID)
            .query(`SELECT cmt FROM [100].[dbo].[OELINCMT_SQL] WHERE ID = @ID`);

        let order = orders.recordset.length ? orders.recordset[0] : null;
        if (order) {
            await pool.request()
                .input('cmt', req.body.cmt)
                .query(`UPDATE [100].[dbo].[OELINCMT_SQL] SET cmt = @cmt WHERE ID = @ID;`);

            order = { ...order, ...req.body };

            response.json(order);
        } else {
            response.status(404).json({
                message: 'Record not found'
            });
        }
    } catch (error) {
        response.status(500).json(error);
    }
}

module.exports = {
    getallcustomerOrders : getallcustomerOrders,
    getcustomerOrders : getcustomerOrders,
    updateComments : updateComments
}

api.js

var Db = require('./dboperations');
var dboperations = require('./dboperations');

var express = require('express');
var bodyParser = require('body-parser');
var cors = require('cors');
const { request, response } = require('express');
var app = express();
var router = express.Router();

app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
app.use(cors());
app.use('/api', router);

router.use((request,response,next)=> {
    console.log('middleware');
    next();
})

router.route('/customerOrder').get((request,response)=>{
    dboperations.getallcustomerOrders().then(result => {
        response.json(result[0]);
        console.log(result[0]);
    })
})

router.route('/customerOrder/:orderNumber').get((request,response)=>{
    dboperations.getcustomerOrders(request.params.orderNumber).then(result => {
        response.json(result[0]);
        console.log(result[0]);
    })
})

router.route('/customerOrder/:ID').put((request,response)=>{
    dboperations.updateComments(request.params.ID).then(result => {
        response.json(result[0]);
        console.log(result[0]);
    })
})

var port = process.env.PORT || 5000;
app.listen(port);
console.log('Customer Order API is running at ' + port);

dboperations.getcustomerOrders().then(result => {
    console.log(result);
})

dboperations.getallcustomerOrders().then(result => {
    console.log(result);
})

dboperations.updateComments().then(result => {
    console.log(result);
})

and calling it in the EmailFaxDetails.js file. Once I type in the order number I get the above error. The order number does exist in the database and once I try the GET method via POSTMAN it gives me back the correct response.

import React, { useState,useEffect } from 'react'
import FetchOrderDetails from './FetchOrderDetails';
import axios from 'axios'
import '../App.css';

const EmailFaxDetails = () => {

    const [orderNumber, setOrderNumber] = useState('');
    const [id, setId] = useState([]);
    const [isShown, setIsShown] = useState(false);

    const url = `http://localhost:5000/api/customerOrder/${orderNumber}`
      useEffect(() => {
        axios.get(url)
        .then(response => {
          setId(response.data)
          console.log(response.data)
        })
        .catch((err) => console.log(err));
      }, [url]);

  const handleChange = event => {
    setOrderNumber(event.target.value);
    console.log(event.target.value);
  };

  const handleClick = event => {
    event.preventDefault();
    setIsShown(true);
    console.log(orderNumber);
  }

    return(
        <div>
            <br></br>
            <br></br>
            Order Number: <input placeholder="Order Number" type="text" id="message" name="message" onChange={handleChange} value={orderNumber} autoComplete="off" />
                {id.map((idnum) => (
                    <div key={idnum.ID}>
                    {isShown && <FetchOrderDetails ord_no={orderNumber} cmt={idnum.cmt} id={idnum.ID}/>}
                    </div>
                ))} 
            <button onClick={handleClick}>Search</button>
        </div>
    )
}

export default EmailFaxDetails;

Error Console Log

Node Output

What might be the issue here and how should I fix this?

1 Answers
var config = require('./dbconfig');
const sql = require('mssql');
const { res } = require('express');

async function getallcustomerOrders(){
    try{
        let pool = await sql.connect(config);
        let orders = await pool.request()
            .query("SELECT * FROM [100].[dbo].[OELINCMT_SQL] order by ID desc");
        return orders.recordsets;
    }
    catch (error){
        console.log(error);
    }
}

async function getcustomerOrders(orderNumber){
    try{
        let pool = await sql.connect(config);
        let orders = await pool.request()
            .input('input_parameter', sql.NChar, orderNumber)
            .query("SELECT ID,cmt FROM [100].[dbo].[OELINCMT_SQL] where LTRIM(ord_no) = LTRIM(@input_parameter)");
        return orders.recordsets;
    }
    catch (error){
        console.log(error);
    }
}

async function updateComments(orderNumber){
    try {
        let pool = await sql.connect(config);
        let orders = await pool.request()
            .input('input_parameter', sql.NChar, orderNumber)
            .query(`SELECT cmt FROM [100].[dbo].[OELINCMT_SQL] WHERE ord_no = @input_parameter`);

        let order = orders.recordset.length ? orders.recordset[0] : null;
        if (order) {
            await pool.request()
                .input('cmt', req.body.cmt)
                .query(`UPDATE [100].[dbo].[OELINCMT_SQL] SET cmt = @cmt WHERE ord_no = @input_parameter;`);

            order = { ...order, ...req.body };

            res.json(order);
        } else {
             res.status(404).json({
                message: 'Record not found'
            }); 
        }
    } catch (error) {
        //res.status(500).json(error);
    }
}

module.exports = {
    getallcustomerOrders : getallcustomerOrders,
    getcustomerOrders : getcustomerOrders,
    updateComments : updateComments
}
Related