tO UPDATE route (PATCH/user/:id)
HERE WE USE PATCH request to UPDATE
BUT PATCH CANNOT BE INITIALIZED IN HTML, HENCE IT NEEDS TO BE OVERRIDED USING METHOD-OVERRIDE PACKAGE.
TO OVERRIDE
DOWNLOAD USING: npm i method-override
REQUIRE IT
const methodOverride = require("method-override");
app.use(methodOverride("_method"));
IN EDIT.EJS
EDIT.EJS
ody>
<h2>You are going to edit:<%=user.EMAIL%></h2>
<form method="post" action="/user/<%= user.id %>?_method=PATCH">
<textarea name="username"><%=user.username%></textarea>
<input type="password" name="password" placeholder="enter password">
<button>Edit password</button>
</form>
INDEX.JS
// TO UPDATE
app.patch("/user/:id", (req, res) => {
let { id } = req.params;
let { password: formPass, username: newUsername } = req.body;
let q = `SELECT * FROM user WHERE id='${id}'`;
try {
connection.query(q, (err, result) => {
if (err) throw err;
let user = result[0];
if (formPass != user.password) {
res.send("WRONG password");
} else {
let q2 = `UPDATE user SET username='${newUsername}' WHERE id='${id}'`;
connection.query(q2, (err, result) => {
if (err) throw err;
res.redirect("/users");
});
}
});
}
catch (err) {
res.send("error occured");
}


Comments
Post a Comment