【发布时间】:2021-11-27 01:05:42
【问题描述】:
我已经设置好所有东西,并且看到我连接成功,但是当尝试使用集合中的数据时,什么都没有。
server.js
const express = require('express');
const connectDB = require('./config/db');
const app = express();
connectDB();
app.get('/', (req, res) => res.send('API Running'));
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*'); // update to match the domain you will make the request from
res.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept'
);
next();
});
app.use(express.json({ extended: false }));
app.use('/api/skateboard_tricks', require('./src/api/skateboard_tricks'));
app.use(
'/api/general_skate_data/trick_type',
require('./src/api/general_skate_data')
);
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Server started on port: ${PORT}`);
});
config/db.js
const mongoose = require('mongoose');
const config = require('config');
const db = config.get('mongoURI');
const connectDB = async () => {
try {
await mongoose.connect(db, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
});
console.log('MongoDB connected...');
} catch (err) {
console.error(err.message);
process.exit(1);
}
};
module.exports = connectDB;
src/api/skateboard_tricks.js
const express = require('express');
const router = express.Router();
const skate_tricks = require('../models/SkateTrick');
// @route GET api/skateboard_tricks
// @desc skateboard tricks data
// @access public
router.get('/', (req, res) => {
skate_tricks.find({}, (err, result) => {
if (err) {
res.send(err);
} else {
const trick_list = result[0];
res.send(trick_list.tricks);
}
});
});
module.exports = router;
应用中的 API 调用
const [trickList, setTrickList] = useState([]);
const [loading, setLoading] = useState(false);
const sfsApiCall = axios.create({
baseURL: 'http://localhost:5000/',
});
const getTrickData = async () => {
try {
const data = await sfsApiCall.get('api/skateboard_tricks').then((res) => {
console.log(res);
setTrickList(res.data);
});
setLoading(true);
} catch (err) {
console.error(err.message);
}
};
useEffect(() => {
getTrickData();
}, [loading]);
这曾经可以工作一段时间,我现在正在重新访问代码,但它不再工作了。不知道发生了什么。
邮递员截图: https://i.stack.imgur.com/gIcok.png
提前致谢!
编辑:我创建了一个单独的应用程序来隔离 API 连接文件,看起来我遇到了网络错误。这是来自邮递员:
GET http://localhost:5000/api/skateboard_tricks
Error: read ECONNRESET
Request Headers
User-Agent: PostmanRuntime/7.28.4
Accept: */*
Postman-Token: 9da940c6-62bc-437e-bb07-d0457368264a
Host: localhost:5000
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
此错误显示在控制台中
GET http://localhost:5000/api/skateboard_tricks net::ERR_CONNECTION_REFUSED 200
这可能是 CORS 问题,但即使是我也不清楚的故障排除。希望这可以帮助有人帮助我。
【问题讨论】:
-
控制台等有什么错误吗?
-
我正要问,浏览器检查器中网络选项卡中的网络调用的响应是什么?
-
@RobertTerrell 控制台或网络选项卡中没有错误。我有一个显示响应数据的 console.log,它给了我 200 代码,但数据字段中没有。
-
@frishi 网络选项卡中没有错误。我得到一个 200 代码,但响应没有数据。
-
请尝试在 API 调用中的
else块中添加console.log(trick_list),看看是否有任何数据通过。
标签: javascript node.js reactjs mongodb express