проблема в том, что поле в базе данных, где должны быть данные из запроса API, говорит "0 полей". Я думаю, это потому, что Монго вставляет объект в базу данных до того, как ответ API будет в переменной объекта. поэтому я думаю, что мне нужно позволить функции вставки базы данных подождать, пока не будет выполнен запрос API.
Кто-нибудь знает, как я могу это сделать?
const express = require('express');
const bodyParser = require('body-parser');
const exphbs = require('express-handlebars');
const path = require('path');
const fs = require('fs');
const fetch = require('node-fetch');
var mongodb = require('mongodb')
var mongoDbQueue = require('mongodb-queue')
const url = 'mongodb://localhost:27017/'
const client = new mongodb.MongoClient(url, { useNewUrlParser: true })
const app = express();
// View engine setup
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
app.set('views', __dirname);
// Static folder
app.use('/public', express.static(path.join(__dirname, 'public')));
// Body Parser Middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.get('/', (req, res) => {
res.render('main');
});
app.post('/send', (req, res) => {
var item = {
name: req.body.name,
age: req.body.age,
country: req.body.country,
isValid:
fetch(*/normaly working url inside here*/)
.then(res => res.json())
.then(data => isValid = data)
.then(() => console.log(isValid))
}
client.connect(err => {
const db = client.db('test')
const queue = mongoDbQueue(db, 'my-queue')
queue.add(item, (err, id) => {
})
})
});
app.listen(3000, () => console.log('Server started...'));
.then(() => console.log(equivalent))
дает мне правильное значение, поэтому оно не имеет отношения к API