簡體   English   中英

帶有Express和MySQL的RESTFul API

[英]RESTFul APIs with Express and MySQL

一直試圖找出為什么代碼不輸出錯誤的原因,即使在郵遞員中,也表明它不起作用。 我的app.get可以找到,但是我的app.delete和app.put似乎不起作用,但是沒有輸出可以告訴我代碼出了什么問題。 感謝您的任何建議和意見! 郵遞員顯示錯誤

在此處輸入圖片說明

這是我的SQL代碼:

CREATE DATABASE  IF NOT EXISTS `food_db`;
USE `food_db`;
DROP TABLE IF EXISTS `foodmenu`;

CREATE TABLE foodmenu (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
foodName VARCHAR(50) NOT NULL,
foodDescription VARCHAR(254) NOT NULL,
price DECIMAL(4,2) NOT NULL,
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

INSERT INTO foodmenu (foodName, foodDescription, price) values 
("Fillet o Dory", "Fillet o Dory, our delicious fish sandwich made with wild-caught fish, cheese and tartar sauce", 6.99), 
("McSpoosy", "Some kind of garlic, spicy goodness that's a hot selling item since 2001", 6.66),
("McDrumlets", "If drumlet’s your thing, our McDrumlets will send you right over the mountain. Coated with a light batter, we guarantee you’ll be Shiok ah!", 4.99),
("Double Chili Burger", "Chili, Spice, and everything nice. These were the ingredients chosen to create the perfect the Double Chili Burger", 8.99);

select * from foodMenu;
var express=require('express');
var app=express();

var bodyParser=require('body-parser');
var urlencodedParser=bodyParser.urlencoded({extended:false});

app.use(bodyParser.json()); //parse appilcation/json data
app.use(urlencodedParser);

const foodMenu = require("../model/foodMenu.js")

app.get("/foodMenu/", (req, res, next) => {
    foodMenu.findAll((error,result)=>{
        console.log(req.body);
        if (error) {
          console.log(error);
          res.status(500).send(console.log("Internal Server Error"));
          console.log('"Result"' + ":" + '"Internal Error"')
        };
        res.status(200).send(result);
    })
  });   

  app.put("/foodMenu/:foodID",(req,res,next)=>{
    var foodid = req.params.foodID;
    console.log(req.body)
     foodMenu.edit(foodid,req.body,(error,result)=>{
         if(error){
             console.log(error);
             res.status(500).send('{"Results":Internal Error}');
             return;
            }
            else 
            console.log(result)
            res.status(200).send('{Affected Rows:${result}}')

    })

  })
app.delete("/foodMenu/:foodID",(req,res,next)=>{
  var foodid = req.params.foodID;
  foodMenu.delete(foodid,(error,result)=>{
    if(error){
      console.log(error)
      res.status(500).send('{"Results":Internal Error}')
      return;
    }
    console.log(result)
    res.status(201).send('{Affected Rows:${result}}')
  })
})

module.exports=app;

//seperate file (foodMenu.js)
var db = require('./databaseConfig.js');
 db = db.getConnection()

var modules = {
    findAll: function(callback){
        const  findAllmenuQuery = "SELECT foodName, foodDescription, price FROM foodmenu";
        db.query(findAllmenuQuery,(error,result)=>{
            if(error){
                callback(error,null);
                return;
            }   
            callback(null,result);
        })
    },

    edit: function(foodID,data,callback){
        var editQuery = "update foodmenu set foodName = ?,foodDescription = ?, price = ?  where id = ? " // variable insertQuery, enables you to parse in name, course, code 
        console.log(data)
        db.query(editQuery,[data.foodName,data.foodDescription,data.price,foodID],(error,result)=>{
            if(error){
                callback(error,null);
                return;
            }
            callback(null,result.affectedRows);
        })
    },

    delete: function(foodID,callback){
        var deleteQuery = " delete from foodmenu where id = ?"
        db.query(deleteQuery,[foodID],(error,result)=>{
            if(error){
                callback(error,null);
                return;
            }
            callback(null,result);
        })

    }

}

module.exports = modules

我認為您只需要刪除:uri

因此,直接在郵遞員中嘗試使用localhost:3000/foodMenu/3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM