所以,我正在嘗試使用 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());
}
};
請求方法.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}` },
});
uj5u.com熱心網友回復:
改變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://www.uj5u.com/ruanti/504018.html
標籤:javascript 节点.js 反应 表示 猫鼬
上一篇:我可以為前置中間件創建一個例外嗎
