javascript - 检查mysql数据库中是否存在相同的流派
问题描述
大家好,我是 mysql 新手,想测试数据库中是否存在相同的流派,如果存在则返回状态代码,如果流派不存在,则将流派添加到数据库中。我目前遇到以下问题,它能够检查流派是否存在并返回状态代码,但是当输入不同的流派时,它的反应方式与流派存在的方式相同:
文件 1
Insertgenre:function(genre,description,callback){
var dbConn=db.getConnection();
// connects to the mysql database (contains an asyn function that returns a callback)
dbConn.connect(function(err){
if(err){
console.log(err);
return callback(err,result);
}else{
// Query for get all rows from genre table where genre = entered genre
var checkSql = 'SELECT genre FROM genre WHERE genre = ?';
dbConn.query(checkSql, [genre], function(err1, result) {
if(err) {
return callback(err,result);
}else {
// Checking if the result length is more than 0.
if(result.length > 0) {
return callback(err1,result);
}else {
var sql="insert into genre(genre,description) values(?,?)";
dbConn.query(sql,[genre,description],function(err,result){
dbConn.end();
if(err) {
console.log(err);
}
return callback(err,result);
}
}
}
});
文件 2
app.post('/genre', function(req,res){
var genre = req.body.genre;
var description = req.body.description;
genreDB.Insertgenre(genre,description,function(err,err1,result){
if(err){
//console.log(err)
res.type('json');
res.statusCode=500;
res.send(`{"Result":"Internal Error"}`);
}if(err1){
console.log(err1)
res.type('json');
res.statusCode=422;
res.send(`{"Result":"The genre name provided already exists"}`);
}
else{
res.type("json");
res.statusCode=204;
//res.send(result);
console.log(result);
res.send(`{"Affected Rows":"${result.affectedRows}"}`);
}
});
});
解决方案
您的回调函数预计err
是一个正常的数据库错误,并err1
表明该流派已经存在。
您需要callback()
使用 3 个参数调用以匹配它的预期。
你也有错别字。在第二个查询中,回调函数的参数是err1
,但您使用的是if(err)
.
在文件 2 中,您应该使用,else if(err1)
因为所有这些条件都是互斥的。
Insertgenre: function(genre, description, callback) {
var dbConn = db.getConnection();
// connects to the mysql database (contains an asyn function that returns a callback)
dbConn.connect(function(err) {
if (err) {
console.log(err);
return callback(err, false, result);
} else {
// Query for get all rows from genre table where genre = entered genre
var checkSql = 'SELECT genre FROM genre WHERE genre = ?';
dbConn.query(checkSql, [genre], function(err1, result) {
if (err1) {
return callback(err1, false, result);
} else {
// Checking if the result length is more than 0.
if (result.length > 0) {
return callback(null, true, result);
} else {
var sql = "insert into genre(genre,description) values(?,?)";
dbConn.query(sql, [genre, description], function(err, result) {
dbConn.end();
if (err) {
console.log(err);
}
return callback(err, false, result);
}
}
}
});
});
})
推荐阅读
- vba - 从两个范围中选择取决于从组合框中选择
- node.js - 无法在 Watson node.js 聊天机器人中使用 require 方法
- spring - vert.x 是否支持像 Spring4 一样使用 stomp over sockjs 的 websocket?
- php - 如何在特定产品类别的“继续结帐”按钮上添加自定义 URL [WooCommerce]
- python - 如何从 Python 中的 JSON 文件中获取特定元素?
- php - 如果我在通过 Laravel Eloquent 的 UpdateOrCreate 方法更新时发送空白数据,如何保留以前插入的数据?
- php - 用 SVG 处理的 CSV 数据
- admin-on-rest - react-admin:列表组件中的自定义用户过滤器
- java - 如何压缩和调整位图大小?
- php - 使用 passthru 跳过代理的 MP4 文件