Ошибка подготовленного оператора node-postgresql с нулевым результатом
Я новичок в node.js и postgresql. Я уже связан с Postgres DB и выполнить тестовый код. После того, как я собираюсь использовать подготовленные высказывания, создайте пример сценария входа. если пользователь существует, он возвращает имя пользователя, иначе возвращает сообщение "неверное имя пользователя или пароль". если имя пользователя и пароль верны, возвращается имя пользователя. но никакие данные не будут представлены, значит, не удалось вернуть сообщение. Мой вывод заключается в том, что элемент управления потерпит крах после выполнения функции cliend.end().
это мой код
UserLogin.get = function(userName, callBack) {
pg.connect(pgConString, function(err, client, done) {
if (err) {
callBack("DB connection failed. " + err, null);
return;
}
var selectQuery="SELECT * from " + TABLE + " WHERE userName=($1)";
var query=client.query({
text:selectQuery,
values:[userName],
name:"selectQuery"});
query.on("error", function (error) {
callBack("DB fetch failed. Error Message: " + err, null);});
query.on('row', function(row) {
callBack(null, row);});
query.on("end", function (result) {
client.end();
return;
});
});
}
если строка пуста, не возвращаться к обратному вызову. если row_result не пустой, он работает нормально.. Как...???? любая идея...???
2 ответа
Ваш код
query.on('row', function(row) {
callBack(null, row);
});
означает, что обратный вызов будет вызываться каждый раз, когда запрос выбирает 1 строку из базы данных. В случае, когда запрос имеет 0 результатов, обратный вызов никогда не будет вызван.
Наконец я получил ответ. спасибо за вашу поддержку
UserLogin.get = function(userName, callBack) {
pg.connect(pgConString, function(err, client, done) {
if (err) {
callBack("DB connection failed. " + err, null);
return;
}
var selectQuery="SELECT * from " + TABLE + " WHERE userName=($1)";
var query=client.query({
text:selectQuery,
values:[loginId],
name:"selectQuery"});
query.on("error", function (error) {
callBack("DB fetch failed. Error Message: " + err, null);return;});
query.on('row', function(row,result) {
result.addRow(row);
});
query.on('end', function (result) {
callBack(null,result.rows);
client.end();
return;
});
});
}
в моем старом коде обратный вызов будет вызываться каждый раз, когда запрос выбирает 1 строку из базы данных. Я просто изменил логику