我们正在使用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}}
答案 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);