javascript - 无法将mysql结果存储在外部变量中
问题描述
我尝试了所有可以在网上找到的方法来完成这项工作,但没有一个奏效。我对 sql 数据库进行查询,然后尝试将结果存储在全局范围内的变量中。我通过返回一个承诺来尝试它,使用 await 使用回调,但它们都不起作用。
请我需要帮助。
const checkEmailUsed = (email) => {
let sql = "SELECT * FROM users_signup WHERE user_email = ? LIMIT 1";
return new Promise((resolve, reject) => {
conn.query(sql, email, (err, res) => {
if (err) {
reject(err);
return;
}
resolve(res[0]);
});
conn.end();
});
};
var user = [];
checkEmailUsed("mikias@email.com")
.then((res) => user.push(res))
.catch((err) => console.log(err));
console.log(user); // Still []
解决方案
它认为这是真的,这是因为您的控制台比查询先运行。
这是一个例子:
假设您使用一个云 mysql 数据库示例。然后你的连接需要 10 秒才能得到结果。
这意味着,当您的查询等待结果时,您的控制台已被执行。
所以,为了解决这个问题,也许你可以试试下面的简单代码async/await
:
const simpleFunction = async () => {
const users = await checkEmailUsed("mikias@email.com");
console.log(users);
}
simpleFunction();
是的,这是你的例子。
推荐阅读
- spring - 无法代理接口实现方法 [public final void AbstractTestNGSpringContextTests.setApplicationContext()]
- vba - 通过输入框输入的数字未链接到我在 B 列中的公式
- ruby - 如何使用 selenium 网格对 appium 运行并行测试?
- angular - 根据从另一个 primeNg 多选下拉列表中选择/取消选择的值,从 primeNg 多选下拉列表中添加/删除项目/值
- objective-c - NSTableView 在屏幕外隐藏行
- c# - 字符串替换,在 LINQ 查询中从另一个值中删除一个值
- flutter - 列表视图中的颤振包装小部件
- java - 如何在不关闭 Java 的情况下读取输入流?
- php - Laravel Delete and Update
- reactjs - 'npm run build' 经常冻结我的整个服务器