繁体   English   中英

使用触发器快递js和MYSQL记录新条目时如何返回ID

[英]How to return ID when new entry is recorded with a trigger express js and MYSQL

我目前正在使用 express 和 workbench 来配置一个数据库,我可以在其中创建、查看和更新汽车。

现在,当我发布新车时,它会使用输入制造商 model 和价格创建一个新条目,并且我使用在工作台内使用的触发器为每辆车配置 UUID。 但是,我希望能够在我的 app.post function 中创建新记录时返回这个新的 UUID。

这是我的帖子 function:

//Allow post methods 
app.post('/cars', (req, res) => {
    if (req.query.manufacturer && req.query.model && req.query.price) {
        console.log('Request received'); //logging to check if post request has beeen made 

        connection.connect(function(err) { //query the connection then call an SQL INSERT method to put new record in database. 
            connection.query(`INSERT INTO main.cars (manufacturer, model, price) VALUES ('${req.query.manufacturer}', '${req.query.model}', '${req.query.price}')`, function(err, result, fields) {
                if (err) res.send(err);
                if (result) res.send({manufacturer: req.query.manufacturer, model: req.query.model, price: req.query.price}); //sending the fields to the response (res)
                if (fields) console.log(fields);
                console.log(result)
            });
        });
    } else {
        console.log('Missing a parameter');
    }
});

现在它只返回在 postman 中输入的新字段,而不是新的 uuid (id),并且我很不确定如何执行此操作,因为它是在工作台的触发器中创建的:

CREATE DEFINER=`admin`@`%` TRIGGER `cars_BEFORE_INSERT` 
    BEFORE INSERT ON `cars` FOR EACH ROW BEGIN
        SET new.id = uuid();
    END

查询表以获取分配给刚刚插入的制造商/型号的id

此外,使用带参数的数据库查询,而不是将请求参数直接替换到 SQL 中,以防止 SQL 注入。

 connection.connect(function(err) { //query the connection then call an SQL INSERT method to put new record in database. connection.query('INSERT INTO main.cars (manufacturer, model, price) VALUES (?, ?, ?)', [req.query.manufacturer, req.query.model, req.query.price], function(err, result, fields) { if (err) { res.send(err); } else { connection.query('SELECT id FROM main.cars WHERE manufacturer =? AND model =?', [req.query.manufacturer, req.query.model], function(err, result) { if (err) { res.send(err); } else { res.send({ manufacturer: req.query.manufacturer, model: req.query.model, price: req.query.price, id: result[0].id }); } }); } }); });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM