MERN Axios/Express/Mongoose问题

bgibtngc  于 2023-04-21  发布在  Go
关注(0)|答案(1)|浏览(118)

我相信这个问题之前已经被发现并解决了,但我遇到了麻烦,所以请温柔一点。我正在自学React/Node,并决定制作一个MERN CRUD系统。我对代码的更新部分有问题,我不知道如何修复它。目前(我可以根据需要更新),我的axios调用是:

axios.put('/api/items/' + selectComponent, {
          Quantity: quantityInput.value
        })
          .then((response) => {
            setItems(previous => previous.map((item) => {
              if (item.Item === selectComponent) {
                return { ...item, Quantity: response.data }
              }
              else {
                return item
              }
            }))
          })
          .catch((error) => {
            console.log(error)
          });

MongoDB中条目的模式是

_id: String,
  Item: String,
  unit:String,
  Quantity:Number,
  Reorder: Number,
});

后端是:

const InvItem = mongoose.model('InventoryItems', schema);

app.get('/api/items/:Item', async (req, res) => {
  try {
    const item = await InvItem.findOneAndUpdate(
      { Item: req.params.Item },
    );
    if (!item) {
      return res.status(404).send({ error: 'Item not found' });
    }
    res.send(item);
  } catch (err) {
    console.log(err);
    res.status(500).send({ error: 'Internal server error' });
  }
});

app.put('/api/items/:Item', async (req, res) => {
  try {
    const items = await InvItem.findOneAndUpdate(
  { Item: req.params.Item },
  { $inc: { Quantity: -quantity } },
  { new: true }
    );
    if (!items) {
      return res.status(404).send({ error: 'Item not found' });
    }
    res.send(items);
  } catch (err) {
    console.log(err);
    res.status(500).send({ error: 'Internal server error' });
  } 
});

任何我能想到的尝试总是返回AxiosError 500,我不知道我在做什么。温柔点,我是新来的....

7rfyedvj

7rfyedvj1#

从外观上看,你的数量应该是从请求的主体中出来的。你可能需要改变

{ $inc: { Quantity: -quantity } },

{ $inc: { Quantity: -req.body.Quantity } },

相关问题