【发布时间】:2021-08-04 07:42:59
【问题描述】:
我最近一直在设计一个后端 Web 服务器,主要用于处理来自 mysql 数据库的数据。服务器采用 DOM 格式设计,带有一个控制器文件夹和一个 app.js
我已经实现了一些这种格式的 GET、POST PUT 请求
这是一个 GET 请求的样子
app.get("/movies/:movieID/", (req, res, next) => {
const movieID = parseInt(req.params.movieID);
// if userID is not a number, send a 400.
if (isNaN(movieID)) {
res.status(400).send();
console.log("Error has occured with getting movieID")
return;
}
movies.findByID(movieID, (error, movie) => {
if (error) {
res.status(500).send();
console.log("get Id has error")
return;
};
if (movie === null) {
res.status(404).send();
console.log("movie ID is invalid")
return;
};
//console.log(movie)
res.status(200).send(movie);
console.log("Successful movie ID")
});
});
这是在控制器文件夹中
,findByID: function (movieID, callback) {
var dbConn = db.getConnection();
const findMovieByIDQuery = "select * from movies left join genres on movies.genreid = genres.genreid left join reviews on reviews.movieid = movies.movieid where movies.movieid = ?;";
dbConn.connect(function (err) {
if (err) {
console.log(err);
return callback(err, null);
} else {
dbConn.query(findMovieByIDQuery, [movieID], (error, results) => {
dbConn.end();
if(error) {
return callback(error, null);
}
else if (results.length === 0) {
callback(null, null);
return;
};
console.log(results)
return callback(null, results[0]);
});
}
});
}
我是如何实现获取用户输入的,在这种情况下是一个数字,然后根据 ?位置。
但是,我现在正在尝试创建用户能够基于字符串而不只是 ID 号进行搜索的方法。
这是我目前的代码
app.get("/movies/:movieKeyword", (req, res, next) => {
console.log("Reached the app.js")
movies.findByKeyword((error, moviesAvailable) => {
if (error) {
console.log(error);
res.status(500).send();
};
res.status(200).send(moviesAvailable);
});
});
,findByKeyword: function(callback) {
console.log("Reached find by keyword")
var dbConn = db.getConnection();
const findAllMoviesQuery = "SELECT title, description, cast, time, opening_date, picture from movies WHERE title LIKE '% ? %';"
dbConn.connect(function (err){
dbConn.query(findAllMoviesQuery, (error, results) => {
if (error) {
return callback(error, null);
};
console.log(results)
return callback(null, results);
});
});
}
要在 mysql 中使用 LIKE 查询,我需要以这种格式存储变量:“% ? %”
但是,由于程序无法将变量插入到 ?这次是在 2 个引号和 2 个百分比符号内
【问题讨论】:
-
您的代码甚至没有尝试插入变量值?你用的是哪个mysql包?
-
无论如何,解决方案可能是使用字符串组合在% 符号之间插入
dbConn.escape(keyword)。 -
到目前为止你尝试过什么?你被困在哪里了?另外,请不要使用不相关的标签 - 否则请解释此问题与 server、mysql-workbench 或 backend 的关系。
标签: javascript mysql server mysql-workbench backend