Как правильно использовать Node.js для запроса MySQL и поместить результат в текст ответа AJAX callText? - PullRequest
0 голосов
/ 24 января 2020

Прилагая все усилия, чтобы включить в свою работу то, что я узнал из учебника W3Schools Node.js (чтобы увидеть, как это работает для меня против PHP), я пытаюсь использовать AJAX вызов для запроса MySQL база данных примерно такая:

function test_ajax () {
  var file_address = "../db_connection.js";
  var xml_http_request = new XMLHttpRequest();
  xml_http_request.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      console.log(this.responseText);
    };
  };
  xml_http_request.open("POST", file_address, true);
  xml_http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xml_http_request.send();
}

Это содержимое db_connection. js:

var express = require('express');
var http = require('http');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname)));

var con = mysql.createConnection({
  host: "host",
  user: "user",
  password: "p4s$",
  database: "db"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT id FROM customers where id = 2", function (err, result, fields) {
    if (err) throw err;
    res.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length});
    res.write("Result: " + result[0].id + " " + fields[0].name);
    res.end("");
  });
});

Когда я разверну это в Heroku и вызову test_ ajax, статус равно 200, но текст, который регистрируется в консоли, - это не строка результата, которую я пытаюсь записать в ответ в db_connection. js, а вместо этого весь текст db_connection. js. Как мне исправить это, чтобы сделать ответ в результирующей строке, которую я определяю в res.write? Я посмотрел на Как я могу запросить MySQL с помощью node.js? и не смог найти из него решение, и я посмотрел на Node.JS + mySQL -> Как сделать ajax вызов и доступ к данным на сервере. js? , но этот вопрос, похоже, больше относится к вставке данных, а не к запросу данных.

Кроме того, как правильно запретить кому-либо быть возможность доступа к db_connection. js по URL? Я использовал ответ этой ссылки ( Запретить прямой URL-доступ из Node.js Приложения ), чтобы попытаться запретить доступ, но он не удался, и я все еще могу получить доступ к содержимому файла по URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...