Я новичок в серверных технологиях.(Сам HTML-кодер) И для эксперимента я выполнял такой тип взаимодействия данных между клиентом и сервером (в локальной сети).
файл index.vue на стороне клиента:
<template>
<div class="wrapper">
<div class="chart">
</div>
<!-- <div class="chart"> end -->
</div>
<!-- <div class="wrapper"> end -->
</template>
<script>
import axios from 'axios';
export default{
data: function () {
return {
info: null
}
},
mounted() {
axios.get("http://localhost:2000/")
.then(function (response) {
console.clear();
console.log(response);
})
.catch(function (error) {
console.clear();
console.log(error);
});
},
}
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
Файл index.js (который отвечает за ответ) на стороне сервера:
function z(){
const m = require("./database.js");
return m;
};
z().db.then(function (result) {
const http = require('http');
const port = 2000;
const requestHandler = (request, response) => {
response.writeHead(200, {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
'X-Powered-By': 'bacon'
});
//console.log(request.method);
//console.log(request.headers);
//console.log(request.url.substring(5));
//console.log(request.url);
//console.log(request);
response.write(JSON.stringify(result[0]));
response.end();
};
const server = http.createServer(requestHandler);
server.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err)
}
});
});
И файл Database.js, который на стороне сервера отвечает за получение данных из базы данных:
console.time('test');
var pgp = require('pg-promise')(/*options*/);
var cn = {
host: 'localhost', // server name or IP address;
port: 5432,
database: 'trading_database_eur_usd',
user: 'postgres',
password: '7256'
};
var db = pgp(cn); // database instance;
// select and return user name from id:
var myDb = '';
var newRequest = function(paramRequest){
console.log(paramRequest);
return paramRequest || 'SELECT * FROM eur_usd WHERE primary_key = 4623209;';
};
var promise = new Promise(function(resolve, reject) {
db.any(newRequest(myDb))
.then(user => {
resolve(user);
})
.catch(error => {
reject(console.log(error)); // print the error;
});
});
Но мой вопрос (и проблемы) заключается в том, что мне нужно создать параметризованный запрос от клиента - к базе данных.Грубо говоря, передайте команды sql от клиента на сервер и мгновенно получите ответ на них.До сих пор я предполагаю (но могу ошибаться), что частичное решение проблемы лежит где-то в этой плоскости документации pg-обещания:
ParameterizedQuery
Нопосле долгих попыток я не смог заставить работать код из доков.Если кто-то может подсказать или написать правильный синтаксис для обмена данными, который мне нужен, как со стороны axios, так и со стороны node.js - я буду очень признателен, поскольку я сам не знаю, с какой стороны подойти к решению этой проблемы,(ничего не выходит.) + Желательно, чтобы это было безопасное решение - потому что, насколько я понимаю, простой обмен данными опасен с точки зрения всех видов инъекций.
PS Iбыл бы признателен за любую помощь или конструктивный совет.