【问题标题】:Async and Knex: how they work ?Async 和 Knex:它们是如何工作的?
【发布时间】:2016-05-21 04:54:49
【问题描述】:

我解析一个 json 对象,对于每个元素,我需要执行许多查询。 首先,“选择”查询,根据结果,我执行插入或更新。 我想使用 async.js 和 knex.js 问题是执行顺序不是搜索顺序

            async.each(newContent,function(e){
                //var e=JSON.stringify(element),
                    var z=-1,
                        devicepresenceId = e.device_presence_id;
                //console.log(e);
                async.waterfall([
                    function(cb) {
                        knex('jos_joomrh_event_employee_hours_presence')
                            .whereRaw('device_presence_id=?', devicepresenceId)
                            .select('id', 'applied_at', 'applied_at_end')
                            .debug()
                            .then(function (rows) {
                                console.log(rows);
                                z = _.keys(rows).length;
                                console.log('rows0', z);
                                cb(null,z);
                            })
                            .catch(function (e) {
                                console.log(e)
                                reject(e)
                            })
                        cb(null,z);
                    },
                    function(z,cb){
                        console.log('z',z);
                        if (parseInt(z)==0)
                        {
                            console.log('insertHoursPresence');
                            //insertHoursPresence(e)
                        }
                        else{
                            console.log('updateHoursPresence');
                            //updateHoursPresence(e)
                        }
                        cb(null,'two')
                    }
                ],
                function(err,z){
                    if(err)console.log(err);
                    console.log(z);
                }
                )}
            )}

事实上;它执行了第二个函数和 cb 函数,并在第一个函数之后使用 knex。: 谢谢你的帮助 姆杜克

【问题讨论】:

    标签: mysql node.js asynchronous


    【解决方案1】:

    在 knex 部分,您调用了“cb(null,z)”,您必须在 catch 函数中“移动”该调用(但替换 reject(e) 部分)。您的问题是您在 knex 之外调用 cb() 函数,当然它会立即独立于 knex 结果调用)

    【讨论】:

    • 感谢您的回复,这对我的未来开发很有帮助。姆杜克。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2015-02-11
    • 2014-09-08
    • 1970-01-01
    相关资源
    最近更新 更多