Вопрос - следующий:
У меня есть процедура, которая получает мне параметры, которые будут стоить мне для того, чтобы просочиться в таблице, сделав консультацию. Если я не посылаю ему параметры, так как он приносит мне все реестры. Если я посылаю его, так как он принесет мне результаты, соответствующие фильтру.
CREATE PROCEDURE `pbd_consultar_tbl_roles_activos_usados`(
IN `_rau_id` INT (10),
IN `_rau_nombre` VARCHAR (200),
IN `_rau_descripcion` VARCHAR (4000),
IN `_rau_estado` VARCHAR (40),
IN `_inicio` INT (10),
IN `_offset` INT (10),
OUT `_cantidad` INT (10)
)
SELECT rau_id,
rau_nombre,
rau_descripcion,
rau_estado
FROM tbl_roles_activos_usados
WHERE Concat( Ifnull(rau_id,""), " ", Ifnull(rau_nombre,""), " ", Ifnull(rau_descripcion,""), " ", Ifnull(rau_estado,""), " " ) LIKE Concat( '%', Ifnull(_rau_id, ""), Ifnull(_rau_nombre, ""), Ifnull(_rau_descripcion, ""), Ifnull(_rau_estado, ""), '%' )
Параметры я посылаю их ему через унифицированный указатель ресурса следующей формы:
http://localhost:3300/roles-activos-usados/-----все реестры
http://localhost:3300/roles-activos-usados/?rau_id=2&rau_nombre= "протестируй"...-----Фильтр
На моем сервере NodeJS у меня есть следующие функции
router.get('/prueba', (req: Request, res: Response) => {
const query = `
call pbd_consultar_tbl_roles_por_agrupador(?, ?, ?, ?, ?, @cantidad)
`
MySQL.QueryRun(query, (err: any, response: object[]) =>{
if (err){
res.status(400).json({
status: false,
message: err
});
}else{
res.json({
status: true,
items: response[0]
})
}
})
})
static QueryRun(query:string, callback: Function){
this.instance.cnn.query(query, (err, results: Object[], fields) =>{
if (err){
console.log('Error en el query')
console.log(err)
return callback(err)
}
if (results.length === 0) {
callback('El registro solicitado no existe')
}else{
callback(null, results)
}
})
}
El resultado de esa consulta es este
{
"status": false,
"message": {
"code": "ER_PARSE_ERROR",
"errno": 1064,
"sqlMessage": "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?, ?, ?, ?, ?, @cantidad)' at line 1",
"sqlState": "42000",
"index": 0,
"sql": "\n call pbd_consultar_tbl_roles_por_agrupador(?, ?, ?, ?, ?, @cantidad)\n "
}
}
Если я изменяю названный к процедуре, но посылаю его null во все параметры
const query = `
call pbd_consultar_tbl_roles_por_agrupador(null, null, null, null, null, @cantidad)
`
{
"status": true,
"items": [
{
"rxa_id": 2,
"rxa_idagrupador": 2,
"rxa_nombrerol": "rolxagrupador1"
},
{
"rxa_id": 3,
"rxa_idagrupador": 2,
"rxa_nombrerol": "rolxagrupador3"
}
]
}
если оно я функционирует. Но я не знаю, как посылать те url ему
Я отнесся с req.query но изюмом к этому, если я не посылаю ему параметры
{
"status": false,
"message": {
"code": "ER_PARSE_ERROR",
"errno": 1064,
"sqlMessage": "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?, ?, ?, ?, ?, @cantidad)' at line 1",
"sqlState": "42000",
"index": 0,
"sql": "\n call pbd_consultar_tbl_roles_por_agrupador(?, ?, ?, ?, ?, @cantidad)\n "
}
}
Если я даю один req.query console.log,
{ rau_id: '2', rau_nombre: '"попытайся"' }
он возвращает мне параметры, но я не знаю, как посылать их ему в процедуру.