ВОПРОС NOOB: Как сохранить ответ JSON от NLU Watson - PullRequest
0 голосов
/ 10 мая 2019

Я беру эту книгу для создания моего первого приложения NLU на основе NodeJS, и оно работает безупречно: http://www.redbooks.ibm.com/redbooks.nsf/redbookabstracts/sg248398.html?Open

Но я застрял в сохранении ответа JSON в файл ...

У меня есть файл js (articleServices.js), который обрабатывает вызов, сначала определяя параметры

var parameters = {
   "url": req.body.url,
   "features": {
     "entities": {
       "model": "c9c18e41-2f36-4ee5-ad59-9a3b3243c513"
     },
     "relations": {
       "model": "c9c18e41-2f36-4ee5-ad59-9a3b3243c513"
     }
   }
 };

... и вызываю эти параметры, чтобы Уотсон сделал свою магию ...

var parameters = {
   "url": req.body.url,
   "features": {
     "entities": {
       "model": "c9c18e41-2f36-4ee5-ad59-9a3b3243c513"
     },
     "relations": {
       "model": "c9c18e41-2f36-4ee5-ad59-9a3b3243c513"
     }
   }
 };

... и все это вложено в это:

exports.extractArticleAuthorNames = function(req, callback){ ... }

Как не-dev, моя логика указывает мне, чтобы я вложил код для сохранения файла json в файл, который определит маршрут, гдеответ будет.Поэтому я написал в этом файле (author.js):

До:

var express = require('express');
 var router = express.Router();
 var articleServices = require('../services/articleServices');

 router.post('/', function(req, res) {
     articleServices.extractArticleAuthorNames(req, function(err, response) {
     if (err)
     res.status(500).send('error: ' + err);
     else
     res.send(response)
     });
 });
 module.exports = router;

После

 var express = require('express');
 var router = express.Router();
 var articleServices = require('../services/articleServices');
 var fs = require('fs');

 router.post('/', function(req, res) {
     articleServices.extractArticleAuthorNames(req, function(err, response) {
     if (err)
     res.status(500).send('error: ' + err);
     else
     res.send(response)
     });

 var jsonData = ("../author");

 fs.writeFile("../test/primo.json", jsonData, (error) => { 
   if(erro) {
     throw erro;
   }
   console.log("Worked");
  });
 });
 module.exports = router;

И ... не работал :-(

Журнал ошибок:

ReferenceError: ответ не определен

at /home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/routes/author.js:16:17
at Layer.handle [as handle_request] (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/layer.js:95:5)
at next (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/layer.js:95:5)
at /home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/index.js:335:12)
at next (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/index.js:275:10)
at Function.handle (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/index.js:174:3)
at router (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/router/index.js:47:12)

(узел: 21477) UnhandledPromiseRejectionWarning: Ошибка: невозможно установить заголовки после их отправки.

at validateHeader (_http_outgoing.js:491:11)
at ServerResponse.setHeader (_http_outgoing.js:498:3)
at ServerResponse.header (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/response.js:767:10)
at ServerResponse.send (/home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/express/lib/response.js:170:12)
at /home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/routes/author.js:11:18
at /home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/services/articleServices.js:34:5
at /home/luizc/Área de Trabalho/code_projs/JurisPrimo_Dev/node_modules/watson-developer-cloud/node_modules/ibm-cloud-sdk-core/lib/requestwrapper.js:259:9
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)

(узел: 21477) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо в результате выброса внутри асинхронной функции без блока catch, либо в результате отклонения обещания, которое не было обработано с помощью .catch ().(id отклонения: 1)

(узел: 21477) [DEP0018] DeprecationWarning: Необработанные отклонения обещаний не рекомендуются. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым значениемкод выхода.

=======================================

Не могли бы вы, ребята, дать мне подсказку, как решить эту проблему?

Большое спасибо!

...