gpt4 book ai didi

javascript - 有没有办法使用node.js知道mysql表中是否存在行?

转载 作者:行者123 更新时间:2023-11-29 09:41:12 29 4
gpt4 key购买 nike

我正在尝试创建一个函数,如果它检测到 Nodejs 中特定列中包含值的行,则返回 true。

我尝试使用 query() 中的结果变量,但没有成功:

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]));

console.log(exists);

返回未定义。

最佳答案

promise 在这种情况下很有用。

您遇到的问题是,在函数返回时您的查询尚未完成运行。因此,返回 Promise 后,我们可以稍后返回该值。

Side Note: You should be using prepared queries when using an SQL database.

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/await 自调用函数:

(async function() {
let exists = await rowexists('myothervalue')
console.log(exists)
// The rest of your related code
})()

如果您不喜欢 then() 语法,可以使用 async/await。您可以通过以下两种方式执行此操作:

使用 async/await 的基本功能:

async function test() {
let exists = await rowexists('mythrirdvalue')
console.log(exists)
// The rest of your related code
}

test()

关于javascript - 有没有办法使用node.js知道mysql表中是否存在行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56583299/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com