Итак, я настроил backend, который будет использоваться для перемещения физических элементов на нашем складе. База данных, на которой размещается наше программное обеспечение, является оракулом, а наша старая версия этого веб-приложения написана на PHP, который отлично работает, но имеет некоторые странные сбои и медленный, как и все ад.Node.js драйвер oracle - несколько обновлений
Бэкэнд node.js отлично работает для перемещения отдельных элементов, но как только я попытаюсь переместить ящик (который будет перемещать что-либо из 20-100 элементов), весь бэкэнд останавливается в части .commit().
Кто-нибудь знает, почему это происходит, и что я могу сделать, чтобы исправить это? Предложения по поиску и устранению неисправностей были бы очень желанными!
Код:
function move(barcode,location) {
var p = new Promise(function(resolve,reject) {
console.log("Started");
exports.findOwner(barcode).then(function(data) {
console.log("Got data");
// console.log(barcode);
var type = data[0];
var info = data[1];
var sql;
sql = "update pitems set location = '"+location+"' where barcode = '"+barcode+"' and status = 0"; // status = 0 is goods in store.
ora.norway.getConnection(function(e,conn) {
if(e) {
reject({"status": 0, "msg": "Failed to get connection", "error":e});
}
else {
console.log("Got connection");
conn.execute(sql,[],{}, function(err,results) {
console.log("Executed");
if(err) {
conn.release();
reject({"status": 0, "msg": "Failed to execute sql"+sql, "error": err});
}
else {
console.log("Execute was successfull"); // This is the last message logged to the console.
conn.commit(function(e) {
conn.release(function(err) {
console.log("Failed to release");
})
if(e) {
console.log("Failed to commit!");
reject({"status": 0, "msg": "Failed to commit sql"+sql, "error": e});
}
else {
console.log("derp6");
resolve({"status": 1, "msg": "Relocated "+results.rowsAffected+" items."});
}
});
}
});
}
});
});
});
return p;
}
Добавлены ошибки, в которых он отсутствовал без каких-либо результатов. Кажется, что он никогда не попадает в раздел .commit() (или, вернее, никогда не входит в него). – yusijs
Добавил autocommit в раздел, и он отлично работал. Я не большой поклонник использования autocommit, но, похоже, это единственный выбор на данный момент. – yusijs
ok..если это работает для вас :). Вы получили строчную ошибку, которая возвращается сервером базы данных? –