gpt4 book ai didi

javascript - 在 Node 函数中进行数据库调用

转载 作者:行者123 更新时间:2023-11-30 17:31:23 27 4
gpt4 key购买 nike

我有一个正在调用的函数,我需要在该函数内部进行一些数据库查询。在 Node 中执行此操作的最佳方法是什么?目前我只是发出请求并将返回值分配给一个变量,但这导致未设置变量。示例:

// bunch of code
var is_member = false;
mysql.query('SELECT EXISTS ( SELECT * FROM `qazusers` WHERE `qazemail` = ? OR `otheremail` = ? LIMIT 1)', [emailaddress, emailaddress], function (err, result) {
if (err) {
logger.info('Error checking. ', err);
}
logger.info('checkmembership: ', result);
if (result[0] === 1) {
is_member = true;
}
// bunch more code finishing out the function this is inside

一旦包含函数完成运行,is_member 始终为 false。我假设这是由于 Node 的异步性质,但是处理这个问题的最佳方法是什么?我已经阅读了一些关于 Promises(比如 Q 库)的内容,但我仍然不确定在基于 nodejs 的函数中设置变量的最佳方法。理想情况下,这将如何完成?

最佳答案

Promises 是一种很好的方法。你会像这样使用它们:

var promise = Q.ninvoke(mysql, "query", 'SELECT EXISTS ( SELECT * FROM `qazusers` WHERE `qazemail` = ? OR `otheremail` = ? LIMIT 1)', [emailaddress, emailaddress])
var moreresults = promise.then(function(result) {
logger.info('checkmembership: ', result);
return result[0] === 1;
}).then(function(is_member) {
// bunch more code finishing out
return more;
});
moreresults.catch(function(err) {
logger.info('Error checking. ', err);
});

关于javascript - 在 Node 函数中进行数据库调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22998571/

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