Прилагая все усилия, чтобы включить в свою работу то, что я узнал из учебника 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.