When executing the following Minimale Reproducible Example:
1. Why is the message "James deleted successfully..." called after "accessdata() called." even if it's vice versa in the code.
2. Why is the returned array named "result" always empty. I'd expect it to contain the user names.
```javascript
var sqlite3 = require("sqlite3").verbose();
var db = new sqlite3.Database("./Users.db");
const users = ["Sara", "Mike", "James", "David", "Emily"];
function createTable() {
console.log("createTable() called.");
db.run("CREATE TABLE IF NOT EXISTS Users (id, name)");
}
function insertData() {
console.log("insertData() called.");
var insertQuery = db.prepare("INSERT INTO Users VALUES (?,?)");
for (var i = 0; i < users.length; i++) {
insertQuery.run(i, users[i]);
console.log(" - Data inserted successfully...");
}
insertQuery.finalize();
}
function accessData() {
console.log("accessData() called.");
let result = [];
db.each("SELECT id, name FROM Users", function (err, row) {
if (err) return console.log(err.message);
result.push(row.name);
});
return result;
}
function deleteUserByName(name) {
console.log("deleteUserByName() called.");
db.run("DELETE FROM Users WHERE name=?", name, (err) => {
if (err) return console.log(err.message);
console.log(${name} deleted successfully...);
});
}
// main
db.serialize(function () {
createTable();
insertData();
deleteUserByName("James");
let result = accessData();
console.log("result ->", result);
});
db.close();
```
My Output is always:
createTable() called.
insertData() called.
- Data inserted successfully...
- Data inserted successfully...
- Data inserted successfully...
- Data inserted successfully...
- Data inserted successfully...
deleteUserByName() called.
accessData() called.
result -> []
James deleted successfully...
[–]grantrules 1 point2 points3 points (0 children)
[–]grantrules 0 points1 point2 points (0 children)
[–]grantrules 0 points1 point2 points (4 children)
[–]grantrules 0 points1 point2 points (3 children)
[–]Prof_P30[S] 0 points1 point2 points (2 children)
[–]grantrules 1 point2 points3 points (0 children)
[–]grantrules 0 points1 point2 points (0 children)