使用sqlite3的回调

时间:2017-03-24 11:13:39

标签: node.js sqlite

好吧,下面是我的代码片段,我已经删除了许多不必要的东西和不相关的东西,但我已经离开了处理问题的部分。

我在调用运行必要查询所需的函数时使用回调。由于我在下面有很多这样的查询,我想知道这是否是确保查询执行所需订单的正确方法。我知道我可以删除这些函数并简单地将它们放在序列化中,但是重复相同的代码非常难看,所以我把它们放在函数中,更明确的是这里是我的问题。

问题:如果我在函数内部有很多查询,那么确保以所需顺序执行get的正确方法是使用我已经完成的回调?,即使在你不想返回任何内容的情况下,例如(更新行时)表中的数据库)

get_data(pel, function(results){
    var cntl = results;
    get_user(pel, function(results_from_user){
        update_data(0, 0, function(cb_result){

                //do some stuff
        });
    });
});

function get_data(dt, callback)
{
    db.get(`SELECT * FROM my_table`, function(error, row) {
        var data_to_return = [..];
        return callback(data_to_return);
    });
}

function update_data(vdr,dwe,callback)
{ 
    db.run(`UPDATE my_table SET val1='${..}', val2 = '${..}'`);
    //..
    return callback("updated");
}

function get_user(ms, callback)
{
    db.get(`SELECT id FROM my_table_2 WHERE id=${..};`, function(error, row) {
        if(row == undefined) db.run(`INSERT INTO my_table_2 (id) VALUES (?)`,[0]);
        //..
        var id_to_return = [..];
        return callback(id_to_return);
    });
}

也许我应该添加我的代码按预期工作,我只是确保我没有使用一种奇怪的方式。

1 个答案:

答案 0 :(得分:1)

我可以向您保证您已经制定了典型的解决方案。事实上,回调用于等待响应,然后转到下一个语句.Goog job