Muhammad Haekal
Muhammad Haekal

Reputation: 612

show data after inserted using sequelize raw queries in express

I'm trying to send the inserted data with raw queries using sequelize then show it. Below is my code:

const c_product_post = async (req, res) => {
try {
    const sql = `INSERT INTO products (p_name, p_price, p_stock, p_review, "createdAt", "updatedAt")
    VALUES ('${req.body.product_name}', ${req.body.product_price}, ${req.body.product_stock}, ${req.body.product_review}, now(), now());`
    const postData = await Product.sequelize.query(sql)
    // await postData.save()
    res.send({
        message: "success add new product",
        data: postData
    })
}
catch (err) {
    res.send({
        message: err
    })
  }
}

what I'm trying to achieve is that after the data is inserted then it will be shown (see below image in red):

enter image description here

Upvotes: 0

Views: 441

Answers (1)

Stefanov.sm
Stefanov.sm

Reputation: 13009

Add RETURNING clause to your query. Try this

INSERT INTO products (p_name, p_price, p_stock, p_review, "createdAt", "updatedAt")
    VALUES ('${req.body.product_name}', ${req.body.product_price}, ${req.body.product_stock}, ${req.body.product_review}, now(), now()) 
RETURNING *;

Please note that your approach is highly SQLi prone. Consider using prepared statements instead of text substitution.

Upvotes: 2

Related Questions