我需要开发一个电子商务网站使用节点js和MySQL为我的大学课程。在结帐过程中,我被要求允许用户输入送货地址并更新用户表的对应字段。当我在查询中设置一个特定的id (例如id=100)时,下面的代码可以工作,但是如果我不想指定值呢?
我试过像id=这样的东西吗?(参见我的代码)但是我得到了一个错误语法。提前感谢您的帮助。
玛拉
app.post('/submitaddress', function (req, res) {
// catching the variables
var address = req.body.address;
// put the data in the database
// pulling in mysql
var mysql = require('mysql');
// set up a connection
var con = mysql.createConnection({
host: "localhost",
user: "root",
database: "test",
password: ""
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "UPDATE `test`.`users` SET `address`='"+address+"' WHERE id=100;";
console.log(sql);
con.query(sql, function (err, result) {
if (err) throw err;
console.log("1 record inserted");
});
});
res.send('address added');
})<!--CHECKOUT PAGE-->
<div data-role="page" id="checkout">
<div data-role="header">
<div class="flex-container">
<img class="responsive-2" src="images/logo_yes.png">
</div>
</div>
<div role="main" class="ui-content">
<h1>Delivery address</h1>
Delivery address <input type="text" id="address"/> <br>
<button id="submitorder">Submit order</button>
</div><!-- /content -->
<div data-role="footer">
<div data-role="navbar">
<ul>
<li><a href="#homepage" data-icon="home"></a></li>
<li><a href="#" data-icon="shop"></a></li>
<li><a href="#" data-icon="phone"></a></li>
</ul>
</div>
</div>
</div><!-- /page -->
app.post('/submitaddress', function (req, res) {
// catching the variables
var address = req.body.address;
// put the data in the database
// pulling in mysql
var mysql = require('mysql');
// set up a connection
var con = mysql.createConnection({
host: "localhost",
user: "root",
database: "test",
password: ""
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "UPDATE `test`.`users` SET `address`='"+address+"' WHERE `id`=?;";
console.log(sql);
con.query(sql, function (err, result) {
if (err) throw err;
console.log("1 record inserted");
});
});
res.send('address added');
})
发布于 2021-04-15 18:05:09
使用node运行以下代码,然后您将了解将身份验证码放在何处,并在想要更新地址的API中使用结果用户ID。
通过使用中间件,您可以为所有路由添加一个通用的身份验证方法,并且可以使用res.locals对象将结果传递给API方法,这在许多场景中都非常有用。
var express = require('express');
const http = require("http");
const debug = require("debug")("node-angular");
let app = express();
console.log("Server Started");
const auth = (req, res, next) => {
// Process the authorization header of the Request here and determine the logged in user
res.locals.userID = 100;
next();
};
app.get('/get', auth, async (req, res) => {
try {
res.status(201).json({
details: "Secret User ID: "+res.locals.userID
});
} catch (err) {
console.log(err);
res.status(500).json({
details: "Internal Error!"
});
}
});
// Server Start
const normalizePort = val => {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
};
const onError = error => {
if (error.syscall !== "listen") {
throw error;
}
const bind = typeof addr === "string" ? "pipe " + addr : "port " + port;
switch (error.code) {
case "EACCES":
console.error(bind + " requires elevated privileges");
process.exit(1);
break;
case "EADDRINUSE":
console.error(bind + " is already in use");
process.exit(1);
break;
default:
throw error;
}
};
const onListening = () => {
const addr = server.address();
const bind = typeof addr === "string" ? "pipe " + addr : "port " + port;
debug("Listening on " + bind);
};
const port = normalizePort(process.env.PORT || "3000");
app.set("port", port);
const server = http.createServer(app);
server.on("error", onError);
server.on("listening", onListening);
server.listen(port);https://stackoverflow.com/questions/67106048
复制相似问题