javascript - 如何等待 Axios 的 GET 请求完成
问题描述
我正在使用 Nodejs 制作一个网络记事本,并表达所有数据将保存在 MongoDB 中的位置。我想通过我的 Rest API 使用 Axion 发出 HTTP 请求来获取数据。
当我发送 GET 请求时,程序不会等待 JSON 文件,而是继续,因此,它会导出一个未定义的文件,并且该站点在没有数据的情况下显示。
在 GET 请求之后使用 console.log,我得到了我需要的所有数据——但为时已晚。
应用程序.js:
const express = require('express');
const chalk = require('chalk');
const debug = require('debug')('app');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const cors = require('cors');
require('dotenv/config')
const app = express();
const port = 3000;
app.use(cors());
app.use(express.static('views'));
app.use(bodyParser.json());
app.set('views', './views');
app.set('view engine', 'ejs');
const postsRoute = require('./routes/posts');
// Here i import the data from the GET request
const getData = require('./routes/router');
app.use('/posts', postsRoute);
// The outcome of this log is; Promise {<pending>}
console.log(getData);
app.get('/', (req, res) => {
res.render(
'index',
{
// Here i want to send the Data to the ejs file
getData,
title: 'Notepad'
});
});
// Connect to DB
mongoose.connect(
process.env.DB_CONNECTION,
{useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true, useFindAndModify: false}, () =>
debug('Connected correctly to MongoDB')
);
app.listen(port, () => {
debug(`Listening on port ${chalk.green(port)}`);
});
router.js 我发出 GET 请求的地方(我应该更改文件的名称......)
const axios = require('axios').default;
async function getData() {
try {
const response = await axios.get('http://localhost:3000/posts');
console.log(response);
return response.data
} catch (err) {
console.log(err);
}
}
module.exports = getData();
获取请求:
router.get('/', async (req, res) => {
try {
const posts = await post.find();
res.json(posts);
} catch (err) {
res.json({message: err})
}
});
解决方案
推荐阅读
- angular - Angular 10 数组虽然通过引用传递但没有改变
- reactjs - React 什么时候导入我的 JS 文件?
- python - 十进制到二进制数转换程序——如何使它更好或更短?
- python-3.x - 使用 pytube 下载 youtube 视频时出现属性错误
- windows - 在 PowerShell 中将多个文件移动到另一个磁盘中的匹配名称文件
- php - 如何使用谷歌图表绘制多条线
- java - 通过 pdfbox 将图像添加到 pdf,但添加 pdf 后变为空白
- typescript - 如何导出可以是对象或布尔值的类型而不会引发未定义的属性错误?
- nuxt.js - 在 nuxt 正文结束之前添加客户端 javascript 资产
- rust - 写入 websocket 流