I am trying to pass an IF statement (IF data exists in table, [true] update data, [false] insert data) in NodeJS for either of the following queries:
var mysql = require('mysql');
var config = require('./config.json');
var pool = mysql.createPool({
host : config.dbhost,
user : config.dbuser,
password : config.dbpassword,
database : config.dbname
});
exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
pool.getConnection(function(err, connection) {
// IF STATEMENT
var id = ... //select statement to the same table...??
If (id = ?) {
// If TRUE
connection.query('UPDATE table SET email = "'[email protected]'" WHERE id = 1;', function (error, results, fields) {
// And done with the connection.
connection.release();
// Handle error after the release.
if (error) callback(error) ;
else callback(null, results);,
// If FALSE
connection.query('INSERT INTO table (id, name, email) VALUES (1, "'John Doe'", "'[email protected]'");', event['i'], function (error, results, fields) {
// And done with the connection.
connection.release();
// Handle error after the release.
if (error) callback(error) ;
else callback(null, results);
};
});
});
};
I am new to NodeJS and I am still trying to figure out the IF STATEMENT with the codes I have above. I will keep you posted.
@CHRISWILLIAMS RESULTS DETAILS FOR HIS ANSWER
Basically, I have 2 APIs.
The first API runs initially, drop canvass_prices if exists. This one I don't have any issue. Here's the result of the first API:
Response:
[
{
"ID": 1,
"Item": "Earth Science Deep Conditioning Masque For Hair - 2 Fl Oz",
"Qty": 30,
"Container": "Bottle",
"Size": "750ml",
"Reiciendis eos nostrum ut sequi.": 1680,
"Sed quidem aspernatur quisquam ut.": 19920,
"Aut dolorem repellendus iste nisi...": 79170
}
]
Request ID:
"e2bbe38b-8121-4cb5-aa88-ac570b066759"
Function logs:
START RequestId: e2bbe38b-8121-4cb5-aa88-ac570b066759 Version: $LATEST
END RequestId: e2bbe38b-8121-4cb5-aa88-ac570b066759
REPORT RequestId: e2bbe38b-8121-4cb5-aa88-ac570b066759 Duration: 287.67 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 74 MB
And this is the 2nd API (see my 1st update here) which I am having trouble with. This API will update the canvass_prices created by 1st API.
However, the first time I clicked the result is this:
Response:
[
{
"ID": 1,
"Item": "Earth Science Deep Conditioning Masque For Hair - 2 Fl Oz",
"Qty": 30,
"Container": "Bottle",
"Size": "750ml",
"Reiciendis eos nostrum ut sequi.": 1680,
"Sed quidem aspernatur quisquam ut.": 19920,
"Aut dolorem repellendus iste nisi...": 79170,
"Voluptates laudantium voluptas nam.": null,
"Ipsum voluptatem dolorum commodi.": null
}
]
Request ID:
"4aed4c97-8ef6-485c-93b4-ca2eaf95703d"
Function logs:
START RequestId: 4aed4c97-8ef6-485c-93b4-ca2eaf95703d Version: $LATEST
END RequestId: 4aed4c97-8ef6-485c-93b4-ca2eaf95703d
REPORT RequestId: 4aed4c97-8ef6-485c-93b4-ca2eaf95703d Duration: 393.79 ms Billed Duration: 400 ms Memory Size: 128 MB Max Memory Used: 75 MB
The the second and subsequent clicks solves my issue, it returns the correct results and will not further return duplicate "ID".
Response:
[
{
"ID": 1,
"Item": "Earth Science Deep Conditioning Masque For Hair - 2 Fl Oz",
"Qty": 30,
"Container": "Bottle",
"Size": "750ml",
"Reiciendis eos nostrum ut sequi.": 1680,
"Sed quidem aspernatur quisquam ut.": 19920,
"Aut dolorem repellendus iste nisi...": 79170,
"Voluptates laudantium voluptas nam.": null,
"Ipsum voluptatem dolorum commodi.": null
},
{
"ID": 9,
"Item": "Laci Le Beau Maximum Strength Super Dieter's Tea Cinnamon Spice - 12 Tea Bags",
"Qty": 10,
"Container": "Bottle",
"Size": "750ml",
"Reiciendis eos nostrum ut sequi.": null,
"Sed quidem aspernatur quisquam ut.": 30,
"Aut dolorem repellendus iste nisi...": null,
"Voluptates laudantium voluptas nam.": 1510,
"Ipsum voluptatem dolorum commodi.": 17910
}
]
Request ID:
"de40d4fa-06bb-433f-81d0-d667b2e2bca6"
Function logs:
START RequestId: de40d4fa-06bb-433f-81d0-d667b2e2bca6 Version: $LATEST
END RequestId: de40d4fa-06bb-433f-81d0-d667b2e2bca6
REPORT RequestId: de40d4fa-06bb-433f-81d0-d667b2e2bca6 Duration: 70.41 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 75 MB
I wondering why it comes on the second click.
"on the outside and single quotes on the inside. Flip if requirements changes.insert ... on duplicate key update ..and you won't be subject to race conditions.insert ... on duplicate key udpate ...you don't an IF STATEMENT. It will achieve the results if the results regardless. Are your email addresses intentionally different in this question? What do you want id equal to? Is this the same ID n the query?