因此,我试图用mongodb和redux更新产品,但是当我试图更新产品时,数据库似乎没有变化。我解决不了这个问题,你能帮帮我吗?
下面是我的product.js文件:
//UPDATE
router.put('/:id', verifyTokenAndAdmin, async (req, res) => {
try {
const updatedProduct = await Product.findByIdAndUpdate(
req.params.id,
{
$set: req.body,
},
{ new: true }
);
res.status(200).json(updatedProduct);
} catch (err) {
res.status(500).json(err);
}
});apiCalls.js:
export const updateProducts = async (id, product, dispatch) => {
dispatch(updateProductStart());
try {
const res = await userRequest.put(`/products/${id}`);
dispatch(updateProductSuccess({ id, product }));
} catch (error) {
dispatch(updateProductFailure());
}
};requestMethods.js:
import axios from 'axios';
const BASE_URL = 'http://localhost:5000/api/';
const TOKEN =
JSON.parse(JSON.parse(localStorage.getItem('persist:root')).user).currentUser
.accessToken || '';
// set token
localStorage.setItem('ACCESS_TOKEN', TOKEN);
// get token
const myToken = localStorage.getItem('ACCESS_TOKEN');
export const publicRequest = axios.create({
baseURL: BASE_URL,
});
export const userRequest = axios.create({
baseURL: BASE_URL,
headers: { token: `Bearer ${myToken}` },
});发布于 2022-08-29 10:41:59
更改updateProducts如下。注意,给put提供了第二个参数。这将等于后端部分的req.body。
export const updateProducts = async (id, product, dispatch) => {
dispatch(updateProductStart());
try {
const res = await userRequest.put(`/products/${id}`, product);
dispatch(updateProductSuccess({ id, product }));
} catch (error) {
dispatch(updateProductFailure());
}
};在后端,尝试按以下方式更改findByIdAndUpdate。在日志req.body之前,查看您是否正在获取数据。
const updatedProduct = await Product.findByIdAndUpdate(req.params.id, req.body);https://stackoverflow.com/questions/73520760
复制相似问题