reactjs - 将数据从 MongoDB 加载到 React 状态
问题描述
我有一个问题,我可以从我的节点服务器加载用户数据,但是当我尝试将数据放入 React 前端的状态时,我在调用数据时得到 404。
错误:http://localhost:3000/users 404(未找到)
我尝试了几种方法,但似乎我的问题在于无法将数据库中的数据预加载到状态中......谁能告诉我我错过了什么?
路线/API
// @route GET api/users
// @desc Get Users
// @access Public
router.get('/', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
console.error(error.message);
res.status(500).send('Server Error');
}
});
module.exports = router;
然后在前端,我有一个动作
import axios from 'axios';
import {
GET_USERS,
GET_USERS_ERROR
} from './types';
// Get users
export const getUsers = () => async (dispatch) => {
try {
const res = await axios.get('/users');
dispatch({
type: GET_USERS,
payload: res.data,
});
} catch (error) {
dispatch({
type: GET_USERS_ERROR,
payload: {
msg: error.response.status.statusText,
status: error.response.status,
},
});
}
};
我的减速器文件:
import {
GET_USERS,
GET_USERS_ERROR
} from '../actions/types';
const initialState = {
user: null,
users: [],
error: {},
};
export default function(state = initialState, action) {
const {
type,
payload
} = action;
switch (type) {
case GET_USERS:
return {
...state,
users: payload,
};
case GET_USERS_ERROR:
return {
...state,
error: payload,
};
default:
return state;
}
}
最后,我试图获取数据的地方
import React, {
useState,
useEffect
} from 'react';
import {
connect
} from 'react-redux';
import {
getUsers
} from '../../actions/users';
import PropTypes from 'prop-types';
//Bootstrap Table
import BootstrapTable from 'react-bootstrap-table-next';
import paginationFactory from 'react-bootstrap-table2-paginator';
import * as ReactBootStrap from 'react-bootstrap';
const UserTable = ({
getUsers,
users
}) => {
useEffect(() => {
getUsers();
// eslint-disable-next-line
}, []);
const [loading, setLoading] = useState(false);
const columns = [{
dataField: '_id',
text: 'ID'
},
{
dataField: 'user_id',
text: "User's ID"
},
{
dataField: 'firstname',
text: 'Title of Todo'
},
{
dataField: 'lastname',
text: 'Is this done?'
},
];
return ( <
div > Hello < /div>
// <BootstrapTable
// keyField='id'
// data={users}
// columns={columns}
// pagination={paginationFactory()}
// />
);
};
const mapStateToProps = (state) => ({
users: state.users,
});
export default connect(mapStateToProps, {
getUsers
})(UserTable);
解决方案
根据您问题中的这一点 // @route GET api/users
,表明您可能/api
在 FE 调用中丢失了。
尝试
const res = await axios.get('/api/users');
推荐阅读
- php - php对象编码中的json对象
- generics - 一个函数如何要求一个类型实现一个特征而不删除现有的特征绑定?
- ravendb - 使用通配符在字符串数组字段中搜索 RavenDb 方面
- java - Google Calendar Events Watch 401 未经授权
- c# - 通过 REST 服务更新记录
- php - 从文本文件中删除一些字符串
- delphi - Delphi FastReports - 如何更改行?
- python - 数据转换/准备
- c - 在 setjmp() + longjmp() 之间传递比“int”更多的数据
- html - 为什么输入和按钮不占用 div 的整个宽度?