node.js - redux 中的 DELETE 请求
问题描述
我正在使用 Node.js API 编写一个 React Redux CRUD 应用程序。我正在努力删除部分。我收到了成功的删除消息,但我的数据库中没有任何变化。控制台中的成功消息
我只是想知道为什么它不删除任何数据?
用户减速器:
import { userConstants } from '../_constants';
export function users(state = {}, action) {
switch (action.type) {
case userConstants.GETALL_REQUEST:
return {
loading: true
};
case userConstants.GETALL_SUCCESS:
return {
items: action.users
};
case userConstants.GETALL_FAILURE:
return {
error: action.error
};
case userConstants.DELETE_REQUEST:
// add 'deleting:true' property to user being deleted
return {
...state,
items: state.items.map(user =>
user.id === action.id
? { ...user, deleting: true }
: user
)
};
case userConstants.DELETE_SUCCESS:
// remove deleted user from state
return {
items: state.items.filter(user => user.id !== action.id)
};
case userConstants.DELETE_FAILURE:
// remove 'deleting:true' property and add 'deleteError:[error]' property to user
return {
...state,
items: state.items.map(user => {
if (user.id === action.id) {
// make copy of user without 'deleting:true' property
const { deleting, ...userCopy } = user;
// return copy of user with 'deleteError:[error]' property
return { ...userCopy, deleteError: action.error };
}
return user;
})
};
default:
return state
}
}
用户操作:
export const userService =
{
delete: _delete,
};
function _delete(id) {
const requestOptions = {
method: 'DELETE',
// headers: authHeader(),
};
return fetch(`/removeadmin/${id}` , requestOptions).then(handleResponse);
}
AdminListPage 组件:
delete(){
this.props.dispatch(userActions.delete(this.state.delete_user._id));
}
此外,在服务器端,我收到了成功的删除状态
Server_Side 路由器:
app.delete('/removeadmin/:id', function(req, res)
{
var sent_url = url.parse(req.url, true),
qdata = sent_url.query,
sent_id = qdata.id;
console.log('id ' + sent_id);
admin.removeadmin(sent_id, function(err, user) {
if (err)
throw err;
});
Server_Side删除功能:
module.exports.removeadmin = function(id, callback){
var query = { _id: id };
Admin.remove(query, callback);
};
我在没有 redux 的组件中通过简单的 fetch 命令删除了一个用户,并且我在删除请求的正文中发送了 id,它正在工作,但 redux 只是成功的消息。
感谢您的任何帮助
解决方案
您在帖子中的代码应该可以工作,除了 fetch 请求,url 应该在后端 url 前面,所以如果后端 url 是localhost:3000
您的 fetch 应该是:
return fetch(`http://localhost:3000/removeadmin/${id}`,
requestOptions).then(handleResponse);
在您的服务器端路由器中,您可以像这样访问您的 id 参数:
app.delete('/removeadmin/:id', function(req, res)
{
var send_id = req.params.id;
admin.removeadmin(sent_id, function(err, user) {
if (err)
throw err;
});
推荐阅读
- swift - RSSelectionMenu 关闭弹出窗口
- c# - 如何找到一个列表在另一个列表中的位置?
- php - 计算一个foreach循环并在php中创建新元素
- terraform - 无法通过 terraform 创建和附加公共 ip ro 虚拟机
- java - Maven 异常 NoClassDefFoundError ClassNotFoundException 但 Maven 依赖存在命令行
- hibernate - 从子查询创建条件
- ios - 从文档目录中检索音频文件
- sockets - 为什么当我在许多 goroutine 中发送 tcp 抖动数据包(SYN)时,我在每个 goroutine 中读取了许多响应数据包
- angular - 如何简化我编写 NgFor 脚本的方式?
- python - Python3中pair[1]的作用是什么?