Посылать параметры в хранившуюся процедуру MYSQL с NodeJs

Вопрос - следующий:

У меня есть процедура, которая получает мне параметры, которые будут стоить мне для того, чтобы просочиться в таблице, сделав консультацию. Если я не посылаю ему параметры, так как он приносит мне все реестры. Если я посылаю его, так как он принесет мне результаты, соответствующие фильтру.

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: '"попытайся"' }

он возвращает мне параметры, но я не знаю, как посылать их ему в процедуру.

5
задан 03.08.2019, 00:26
0 ответов