使用Knex.JS添加字段时如何捕获错误

时间:2016-03-22 15:36:55

标签: javascript sql knex.js

我们正在使用knex.js来生成和执行SQL。在向现有表格添加字段时,我们无法捕获错误,而documentation未涵盖此特定用例。尝试添加重复字段确实会在控制台(VSCODE)中返回错误,但是没有标准事件在错误上调用,因此我们无法将其捕获到代码中。这是代码:

{ [TypeError: table.string(...).catch is not a function] 'error@context': { accessToken: undefined } }

这在VSCODE控制台中返回:

table.string('test').catch(
    callback(null, Lib.returnEvent(false))
);

但是,没有调用任何回调。添加字段时如何检查错误?

UPDATE#1 此代码将调用回调,但显然没有任何错误信息。并且,无论如何,控制台中都会出现相同的错误:

knex.schema.table(tableName, function(table) {
    table.string('ddd');
}).then(function(e) {
    callback(e);
}).catch(function(e) {
    callback(e);
})

UPDATE#2 使用以下代码不会调用回调:

knex.schema.table(tableName, function(table) {
    table.string('ddd');
    callback(true);
}).then(function(e) {
    callback(true, e);
}).catch(function(e) {
    callback(false, e);
})

UPDATE#3 在此示例中,第一个回调被调用,但该函数在后续调用中挂起:

{{1}}

2 个答案:

答案 0 :(得分:3)

我能够通过切换到Knex回调方法而不是使用promises方法来解决此问题。此代码一致地运作:

#reset

答案 1 :(得分:0)

这对我有用

return knex('users')
        .insert({
          username: req.body.username,
          password: hash,
        })
        .returning('*')
        .bind(console)
        .then(console.log)
        .catch(console.error);