Почему мой код Node.Js не дает ответа в первом запросе при получении значения от пользователя? - PullRequest
0 голосов
/ 20 сентября 2018

В этом коде я отправляю запрос POST на сервер, который содержит идентификатор электронной почты, и с помощью этого идентификатора электронной почты я получаю информацию из базы данных.Я проверяю это у почтальона "http://127.0.0.1:80/echo" POST-запрос после отправки запроса в первый раз, когда он показывает в ответе

{
    "source": "webhook-echo-sample"
}

, и во второй раз он дает мне правильный результат

{
    "speech": "Name:xyz Mobile.no:123456789Address:qweCollege:azx Email:cvb@gmail.com",
    "source": "webhook-echo-sample"
}

Почему мой первый запрос к API терпит неудачу?

"use strict";
const express = require("express");
const restService = express();
const bodyParser = require("body-parser");
const os = require('os');

var mysql = require("mysql");
var final;
var Name = "Name:";
var Mobileno = "Mobile.no:";
var College = "College:";
var Address = "Address:";
var Email = "Email:";

restService.use(
    bodyParser.urlencoded({
        extended: true
    })
);

restService.use(bodyParser.json());
restService.post("/echo", function(req, res) {

    var con = mysql.createConnection({
        host: "abc.com",
        user: "xyz123",
        password: "123456",
        database: "seller1"
    });
    var email = req.body.result.parameters.echoText
    var sql = 'SELECT * FROM seller1 WHERE email_id=' + mysql.escape(email);
    con.query(sql, function(error, results) {
        if (!error) {
            for (var i = 0; i <= results.length - 1; i++) {
                final = Name + results[i].Name + "\n" + Mobileno + results[i].mobile_no + "\n" + Address + results[i].Address + "\n" + College + results[i].College + "\n" + Email + results[i].email_id;
            }
        } else {
            return [];
        }
    });

    return res.json({
        "speech": final,
        "source": "webhook-echo-sample"
    });
});

restService.listen(process.env.PORT || 80, function() {
    console.log("Server up and listening");
});
 

1 Ответ

0 голосов
/ 20 сентября 2018

Я думаю, что это из-за JavaScript Асинхронный характер

попробуйте отправить ответ внутрь! Проверка ошибок, как показано ниже

restService.post("/echo", function(req, res) {

    var con = mysql.createConnection({
        host: "abc.com",
        user: "xyz123",
        password: "123456",
        database: "seller1"
    });
    var email = req.body.result.parameters.echoText
    var sql = 'SELECT * FROM seller1 WHERE email_id=' + mysql.escape(email);
    con.query(sql, function(error, results) {
        if (!error) {
            for (var i = 0; i <= results.length - 1; i++) {
                final = Name + results[i].Name + "\n" + Mobileno + results[i].mobile_no + "\n" + Address + results[i].Address + "\n" + College + results[i].College + "\n" + Email + results[i].email_id;
            }
            return res.json({
              "speech": final,
              "source": "webhook-echo-sample"
            });
        } else {
            return [];
        }
    }); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...