Я пытаюсь подключить веб-службу Node.js и express к моей базе данных SQLServer.
Я проверял, и они возвращают правильные значения в базу данных, но проблема заключается в том, когда Я пытаюсь получить информацию из Graphql и преобразовать ее в JSON
. JSON возвращает мне структуру, которая мне нужна, но со всеми данными с нулевым значением.
Это это конфигурация базы данных:
const sql = require('mssql');
const config = {
user: 'user',
password: 'password',
server: 'server',
database: 'db',
options: {
encrypt: true
}
};
Это метод, который вызывается Graphql:
let getEmpleado = (id) => {
let datos = sql.connect(config, function(err){
if (err) console.log(err);
let sqlQuery = 'SELECT Empleado, Nombre, Apellido1, Apellido2 FROM dbo.Empleados WHERE Empleado=' + id.id;
let sqlRequest = new sql.Request();
//console.log(sqlQuery);
let datos1 = sqlRequest.query(sqlQuery, function(err, empleado){
let datos2;
if (err) console.log(err)
datos = JSON.stringify(empleado.recordset[0]);
sql.close();
console.log(datos);
//return datos2;
});
//return datos1;
});
return datos;
}
Результат:
{
"data": {
"empleado": {
"Empleado": null,
"Nombre": null,
"Apellido1": null,
"Apellido2": null
}
}
}
Я совсем новичок в это и мне нужна помощь, потому что я схожу с ума в поисках информации.
Edit 1:
После отладки функции я увидел, что она выполняется в порядке, который не логичен для меня.
Я помещаю код снова с номером, указывающим шаги, которые он делает.
let getEmpleado = (id) => {
1- let datos = sql.connect(config, function(err){
3- if (err) console.log(err);
4- let sqlQuery = 'SELECT Empleado, Nombre, Apellido1, Apellido2 FROM dbo.Empleados WHERE Empleado=' + id.id;
5- let sqlRequest = new sql.Request();
//console.log(sqlQuery);
6- let datos1 = sqlRequest.query(sqlQuery, function(err, empleado){
8- let datos2;
9- if (err) console.log(err)
10- datos = JSON.stringify(empleado.recordset[0]);
11- sql.close();
12- console.log(datos);
13- //return datos2;
});
7- //return datos1;
});
2- return datos;
}
Редактировать 2:
Как Дэниел Сугестед, я проверяю документацию MS sql и использую обещание Queries Exam ple: Пример запросов Promises .
После отладки снова какой-то странный порядок выполнения функций.
1- const sql = require('mssql')
2- sql.on('error', err => {
// ... error handler
})
3- sql.connect(config).then(pool => {
// Query
6- return pool.request()
.input('input_parameter', sql.Int, id.id)
.query('SELECT Empleado, Nombre, Apellido1, Apellido2 FROM dbo.Empleados WHERE Empleado= @input_parameter')
4- }).then(result => {
7- console.dir(result)
8- return result.recordset[0]
}).catch(err => {
// ... error checks
});
5- console.log('End')