【发布时间】:2020-02-24 14:18:41
【问题描述】:
我正在为一个项目和在线课程使用 NLP 情绪分析 API。我想我已经接近了,但我无法完成最后一步。目前,当我发送要由 API 调用分析的 URL 时,我在服务器控制台中获取返回的对象,然后将数据发送到路由/sentiment。然后我有一个函数,我试图从 /sentiment 获取数据并更新页面以显示结果。 #hen 我尝试从 /sentiment 获取数据我得到一个空对象,并且我的页面使用未定义更新。当我转到 /sentiment 时,我可以看到所有数据,但提取不起作用。我认为这些是我的代码的相关部分:
index.js(服务器端):
var path = require('path');
const express = require('express');
const mockAPIResponse = require('./mockAPI.js');
const dotenv = require('dotenv');
const bodyParser = require('body-parser');
const app = express()
app.use(express.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const cors = require('cors');
app.use(cors());
app.use(express.static('dist'))
dotenv.config();
console.log(`Your API key is ${process.env.API_ID}`);
console.log(__dirname)
projectData = {};
url = {};
const AYLIENTextAPI = require('aylien_textapi');
let textapi = new AYLIENTextAPI({
application_id: process.env.API_ID,
application_key: process.env.API_KEY,
})
let apiCall = async (url) => {
textapi.sentiment({
'url': url
}, function(error, response) {
if (error === null) {
JSON.stringify(response);
projectData = response;
console.log(projectData);
}else{
console.log(error)
}
})
};
app.route('/')
.get(function (req, res) {
console.log(process.env);
res.sendFile('dist/index.html', { root: __dirname + '/,'})
})
.post(getSentiment);
function getSentiment(req, res){
console.log(req.body);
projectData = req.body;
console.log(projectData);
res.status(200).send(projectData);
};
const port = 8000;
// designates what port the app will listen to for incoming requests
app.listen(port, function () {
console.log(`Example app listening on ${port}`)
})
app.get('/sentiment', getData);
function getData(req, res){
JSON.stringify({projectData});
res.status(200).send(projectData)
console.log(projectData)
};
app.post('/postURL', getURL);
function getURL(req, res){
console.log(req.body);
url = req.body.data;
console.log(url)
apiCall(url)
}
formHandler.js:
import { postURL } from "./postURL"
import { updateUI } from "./updateUI"
function handleSubmit(event) {
event.preventDefault()
// check what text was put into the form field
let url = document.getElementById('URL').value
postURL('/postURL', url)
updateUI();
};
export { handleSubmit }
更新UI.js:
const updateUI = async () =>{
const res = await fetch('/sentiment');
try {
const allData = await res.json();
console.log(allData)
document.getElementById("polarity").innerHTML = allData.polarity;
document.getElementById("polarityConfidence").innerHTML = allData.polarity_confidence;
document.getElementById("subjectivity").innerHTML = allData.subjectivity;
document.getElementById("subjectivityConfidence").innerHTML = allData.subjectivity_confidence;
return allData
} catch(error) {
console.log(error)
}
};
export { updateUI }
我不知道为什么我在服务器端和 /sentiment 看到所有数据,但是当我尝试在 updateUI 函数中获取它时只得到一个空对象。任何帮助都会非常非常感谢。
非常感谢, 迈克尔
【问题讨论】:
-
这什么也没做 ->
JSON.stringify({projectData});试试 ->res.status(200).json(projectData)
标签: javascript node.js express