Как отправить параметры запроса с топором ios в бэкэнд - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь отправить строковые и числовые значения после нажатия кнопки отправки, которые должны быть сохранены в коллекции базы данных (коллекции журналов). Я использую стек MERN. Я попытался отправить его через Ax ios, но когда я консольно записываю "req.params" в бэкэнд, я получаю неопределенное значение. почему я не получаю набранное значение "order" на бэкэнде? Я уверен, что есть кое-что, что я не делаю правильно, но я могу понять это. Мне нужна помощь.



handleSubChange(id, quantity){

// these lines of code below gets the inputted values and then subtracts from the total quantity

    if ((parseInt(quantity) - parseInt(this.state.minus))<0) {
      alert('The input value is too high.');
    }else{
      var nums = parseInt(quantity)-parseInt(this.state.minus);

// and just before I send the value of "nums" via Axios, I get the user to type in destination for the item and add the inputted value of "order" on the Axios URL

      const order = prompt("Please enter item destination")

      axios.get("/api/inventory/add_product/" + id + "/" + nums + "/" + parseInt(quantity) + "/" + order)
        .then(res => {
          console.log(res);
        })
        .catch(err => {
          console.log(err);
        })
    }

  }

Вот внутренний маршрут


router.get("/add_product/:id/:num/:quantity/:order",(req,res) => {
  var id = req.params.id;
  var quantity = req.params.quantity;

//i then console log req.params.order, i get undefined
console.log(req.params.order)

  // console.log('id----', id);

  var num_mod = req.params.num;

  var modified_count = parseInt(num_mod) - parseInt(quantity);

  console.log('num_mod----', num_mod);

  Inventory.findByIdAndUpdate(id,{quantity: parseInt(num_mod)},{new:true},function(err,inventory){
    if (err){
      console.log("err",err);
      res.status(500).send(err);
    } else {
      console.log(inventory.name);
      console.log(inventory.order)
      const newLog = new Log({
        name:inventory.name,
        description:inventory.description,
        price:parseInt(inventory.price),
        quantity:parseInt(inventory.quantity),
        modified_quantity: parseInt(modified_count),
        order:inventory.order,

      });
      newLog.save(function(err, Log) {
        if (err){
          console.log(err);
        } else{
          console.log('add log success');
          res.send(inventory);
        }
      });
    }
  });

});

Модель инвентаря

const mongoose= require('mongoose');


//create Schema
const InventorySchema = new mongoose.Schema({
   // _id: mongoose.Schema.Types.ObjectId,
   name : { type: String, required: true },
   description : { type: String, required: true },
   price : { type: Number, required: true },
   quantity : { type: Number, required: true },
   supplier : String,
   taxable : Boolean,
   order:String,


// Create model from the schema
const Inventory = mongoose.model("Inventory", InventorySchema);


// Export model
module.exports = Inventory;

1 Ответ

2 голосов
/ 04 марта 2020

Проблема заключается в определении вашего внутреннего маршрута, в котором отсутствует / до :order.

router.get("/add_product/:id/:num/:quantity:order",(req,res) => {
//                                          ^ missing / 

Измените на:

router.get("/add_product/:id/:num/:quantity/:order",(req,res) => {
//                                         ^ correct
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...