我最近一直在设计一个后端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个百分比符号
之内我认为你可以使用模板字面量。这是一个资源,模板字面量。您可以删除百分比符号并用以下语法替换它们:${variable_name}