使用 Knex.JS 添加字段时如何捕获错误
How To Catch Errors When Adding a Field With Knex.JS
我们正在使用 knex.js 生成并执行 SQL。我们在向现有 table 添加字段时遇到错误,而 documentation 不涵盖此特定用例。尝试添加重复字段会 return 控制台中出现错误 (VSCODE),但 none 的标准事件会在出现错误时被调用,因此我们无法将其捕获在代码中。这是代码:
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 控制台中 return 编辑的:
{ [TypeError: table.string(...).catch is not a function] 'error@context': { accessToken: undefined } }
但是,调用了 none 个回调。添加字段时如何检查错误?
UPDATE #1这段代码会调用回调,但显然没有任何错误信息。而且,不管怎样,控制台中都会出现相同的错误:
table.string('test').catch(
callback(null, Lib.returnEvent(false))
);
更新 #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 回调方法而不是使用承诺方法来解决这个问题。此代码始终有效:
knex.schema.table(tableName, function(table) {
table.string(tableFieldname);
}).asCallback(function(err) {
if (err) {
callback(false, err);
} else {
callback(true);
}
})
这对我有用
return knex('users')
.insert({
username: req.body.username,
password: hash,
})
.returning('*')
.bind(console)
.then(console.log)
.catch(console.error);
我们正在使用 knex.js 生成并执行 SQL。我们在向现有 table 添加字段时遇到错误,而 documentation 不涵盖此特定用例。尝试添加重复字段会 return 控制台中出现错误 (VSCODE),但 none 的标准事件会在出现错误时被调用,因此我们无法将其捕获在代码中。这是代码:
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 控制台中 return 编辑的:
{ [TypeError: table.string(...).catch is not a function] 'error@context': { accessToken: undefined } }
但是,调用了 none 个回调。添加字段时如何检查错误?
UPDATE #1这段代码会调用回调,但显然没有任何错误信息。而且,不管怎样,控制台中都会出现相同的错误:
table.string('test').catch(
callback(null, Lib.returnEvent(false))
);
更新 #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 回调方法而不是使用承诺方法来解决这个问题。此代码始终有效:
knex.schema.table(tableName, function(table) {
table.string(tableFieldname);
}).asCallback(function(err) {
if (err) {
callback(false, err);
} else {
callback(true);
}
})
这对我有用
return knex('users')
.insert({
username: req.body.username,
password: hash,
})
.returning('*')
.bind(console)
.then(console.log)
.catch(console.error);