Вывод хранимой процедуры в NodeJS - PullRequest
0 голосов
/ 09 июля 2020

Может кто подскажет, что не так с этим кодом? Я получаю синтаксическую ошибку рядом с Select category_ID; Я использую последнюю версию mysql в nodejs

Примечание. Если я удалю выходные параметры, входной код будет работать правильно.

Код сервера узла -

app.post('/api/createcategory', function (req, res) {
     name = req.body.categoryName, icon = req.body.categoryIcon;
     let createcategory = `CALL spAddCategory(?, ?, @category_id); SELECT @category_id;`
     db.query(createcategory, [name, icon], (err, result) => {
          if(err) {throw err};
          console.log(result);

     })
     res.send('Category Created')
})

SQL Запрос -

CREATE PROCEDURE spAddCategory ( IN category_name varchar(255), IN category_icon varchar(255), OUT category_id int )
     BEGIN
          INSERT INTO categories ( categoryName, categoryIcon ) 
          VALUES ( category_name, category_icon );

          SELECT categoryID INTO category_id FROM categories
          WHERE categoryName = category_name;
     END 

1 Ответ

1 голос
/ 09 июля 2020

Вместо OUT -переменных (которые используются в основном между процедурами) рассмотрите возможность обработки вывода как обычного набора результатов:

app.post('/api/createcategory', function (req, res) {
     name = req.body.categoryName, icon = req.body.categoryIcon;
     let createcategory = `CALL spAddCategory(?, ?);`
     db.query(createcategory, [name, icon], (err, result) => {
          if(err) {throw err};
          console.log(result[0]);

     })
     res.send('Category Created')
})

И процедура возвращает набор результатов, который содержит последний вставленный id (при условии, что categoryID - это AUTO_INCREMENT id):

CREATE PROCEDURE spAddCategory (
category_name varchar(255),
category_icon varchar(255)
)
BEGIN

INSERT INTO categories ( categoryName, categoryIcon ) 
VALUES ( category_name, category_icon );

SELECT last_insert_id();

END 

Обратите внимание, что вы можете получить более одной категории с одинаковым именем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...