首页 > 解决方案 > 如何等待 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})
    }
});

标签: javascriptnode.jsget-request

解决方案


推荐阅读