Javascript 如何使用Axios等待GET请求完成
我正在使用Nodejs和express制作一个网络记事本,所有数据都将保存在MongoDB中。我想通过RESTAPI与Axion进行HTTP请求来获取数据 当我发送GET请求时,程序不会等待JSON文件,而是继续,因此,它会导出一个未定义的文件,其中显示的站点没有数据 在GET请求之后使用console.log,我获得了所需的所有数据,但为时已晚 app.js:Javascript 如何使用Axios等待GET请求完成,javascript,node.js,get-request,Javascript,Node.js,Get Request,我正在使用Nodejs和express制作一个网络记事本,所有数据都将保存在MongoDB中。我想通过RESTAPI与Axion进行HTTP请求来获取数据 当我发送GET请求时,程序不会等待JSON文件,而是继续,因此,它会导出一个未定义的文件,其中显示的站点没有数据 在GET请求之后使用console.log,我获得了所需的所有数据,但为时已晚 app.js: const express = require('express'); const chalk = require('chalk');
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.get('/', async (req, res) => {
try {
const posts = await post.find();
res.json(posts);
} catch (err) {
res.json({message: err})
}
});
您的router.js文件导出一个承诺。要从承诺中获取数据,可以调用then()-或等待它。怎么搞混了?该死!这就解释了。。。必须在app.js文件中调用then()。对不起,我对这个话题还是很陌生。。谢谢你!
router.get('/', async (req, res) => {
try {
const posts = await post.find();
res.json(posts);
} catch (err) {
res.json({message: err})
}
});