gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:14:51 24 4
gpt4 key购买 nike

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

knex.schema.table(tableName, function(table) {

table.string('test').catch(function(e) {
callback(e)
});

}).then(function(e) {
callback(e);
}).catch(function(e) {
callback(e);
})

这是在 VSCODE 控制台中返回的:

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

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

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

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

UPDATE #2 没有调用以下代码的回调:

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

更新 #3 在本例中,调用了第一个回调,但该函数在后续调用中挂起:

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

最佳答案

我能够通过切换到 Knex 回调方法而不是使用 promise 方法来解决这个问题。此代码始终如一地工作:

knex.schema.table(tableName, function(table) {

table.string(tableFieldname);

}).asCallback(function(err) {

if (err) {
callback(false, err);
} else {
callback(true);
}
})

关于javascript - 使用 Knex.JS 添加字段时如何捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36158763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com