在一个节点函数中进行数据库调用
我有一个函数,我打电话,我需要在该函数内进行一些数据库查询。 什么是在节点做这个最好的方法? 目前我只是做一个请求,并将返回值分配给一个variables,但这导致variables不被设置。 例:
// 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
, is_member
总是为false。 我认为这是由于节点的asynchronous性质,但是,处理这个问题的最好方法是什么? 我读了一些Promises(如Q库),但我仍然不确定如何处理基于nodejs的函数中设置variables的最佳方法。 怎么做,理想呢?
承诺是一个好方法。 你会像这样使用它们:
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); });
- 如何从需要返回语句的GraphQLparsing器中调用asynchronousnode.js函数?
- 在node.js中pipe理嵌套的asynchronousforeach循环
- node.js多个http请求
- Marko和Koajs:为什么我的asynchronous片段渲染不起作用?
- 当所有运行并行function完成他们的工作时如何运行callback?
- JavaScript for循环内的asynchronous函数
- NodeJS / Javascript – 使用承诺来处理图像收集,然后保存汇总的结果
- 节点 – 等待循环完成?
- Node.jsasynchronouseachLimit如何在这种情况下工作?