Javascript 有没有办法通过node.js知道mysql表中是否存在行?
我试图使一个函数在检测到nodejs中某个特定列中包含值的行时返回true 我尝试使用查询中的结果变量,但没有成功:Javascript 有没有办法通过node.js知道mysql表中是否存在行?,javascript,mysql,node.js,Javascript,Mysql,Node.js,我试图使一个函数在检测到nodejs中某个特定列中包含值的行时返回true 我尝试使用查询中的结果变量,但没有成功: let rowexists = (mystring) => { let exists = false; let sql = "SELECT EXISTS( SELECT 1 FROM mytable WHERE `mycolumn` = '" + mystring + "')"; connection.query(sql, function(err
let rowexists = (mystring) => {
let exists = false;
let sql = "SELECT EXISTS( SELECT 1 FROM mytable WHERE `mycolumn` = '" + mystring + "')";
connection.query(sql, function(error, result, field){
console.log((result[sql]));
console.log(exists);
exists = (result[sql]);
});
return exists;
}
console.log(rowexists("myvalue"));
事件如果有一行的值为myvalue,则rowexists始终返回false
重要编辑:
我的问题不是这是异步的,而是两者都是异步的
console.log((result[sql]));
及
返回未定义。承诺在这种情况下很有用 您遇到的问题是,在函数返回时,您的查询尚未完成运行。因此,在返回承诺后,我们可以稍后返回值 旁注:使用SQL数据库时应使用 使用异步/等待的自调用函数: 如果不喜欢then语法,可以使用async/await。以下是两种方法,您可以这样做: 使用异步/等待的基本函数:
可能的重复不仅是异步响应,而且。。。结果[选择存在从mytable中选择1,其中`mycolumn`='+mystring+']???还包括console.logresult[sql];行有语法错误括号未闭合。结果是一个行数组,因此第一行的结果应为[0],第一行的结果应为[0]['mycolumn']。不确定为什么要检查现有记录您的目标是什么?我假设你想在获取它之前进行检查,这意味着你正在运行两个查询。我用promises尝试了你的代码,但它仍然取决于我演示的三种风格,你使用了哪种风格?第一种是promises,但这不是我真正的主要问题,我编辑了我的帖子来澄清
console.log(exists);
let rowexists = (mystring) => {
// Return a new promise
return new Promise(resolve => {
// Create the sql query (this uses placeholders)
// Hard coded values don't need to be placeholders but just for example:
let sql = "SELECT 1 FROM ?? WHERE ?? = ?";
// Query the database replacing the ?? and ? with actual data
connection.query(sql, ['mytable', 'mycolumn', mystring], function(error, result, field){
// Result will either be undefined or a row.
// Convert it to a boolean and return it.
resolve(!!result)
});
});
}
// Get the data
rowexists("myvalue").then(result => console.log(result))
(async function() {
let exists = await rowexists('myothervalue')
console.log(exists)
// The rest of your related code
})()
async function test() {
let exists = await rowexists('mythrirdvalue')
console.log(exists)
// The rest of your related code
}
test()