Экспресс Postgres Необработанное обещание об отказе от обещания - PullRequest
0 голосов
/ 11 ноября 2018

Я изучаю Node JS с помощью express и postgres, и когда я создавал приложение CRUD, я получал такую ​​ошибку, когда выполняю инструкцию INSERT INTO.

(node:4998) UnhandledPromiseRejectionWarning: TypeError: Invalid Query Result Mask specified.
at Database.$query (/home/aabishkar/Documents/meanstack/node_modules/pg-promise/lib/query.js:121:25)
at Database.<anonymous> (/home/aabishkar/Documents/meanstack/node_modules/pg-promise/lib/query.js:259:23)
at config.$npm.connect.pool.then.db (/home/aabishkar/Documents/meanstack/node_modules/pg-promise/lib/database.js:326:42)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7) (node:4998) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3) (node:4998) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Мой код выглядит так:

exports.dynamicadd =  function(req, res) {
  var name = req.body.name;
  var dob = req.body.dob;
  var gender = req.body.gender;
  var values = [name, gender, dob];
  console.log(values); //Up to here code is fine. It returns the value.
  //from here the error comes
  var sql = "INSERT INTO students (name, gender, dob) VALUES ?";
  db.query(sql, [values], function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
  });
  res.redirect('/');
}

БД подключена. Также для справки следующий код работает нормально. Ошибка возникает, когда я пытаюсь вставить значения динамически.

//this codes works finely
exports.addlist = function(req, res) {
  qry = "INSERT INTO students (name, gender, dob) VALUES ('sdasda', 'male', '12-12-1999')";
  db.query(qry, function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
  });
  res.redirect('/');
}

Спасибо.

1 Ответ

0 голосов
/ 11 ноября 2018

pg-обещание возвращает promise, обратного вызова не требуется. Вы используете библиотеку неправильно. Когда значения являются вторым параметром, тогда третий параметр не должен быть обратным вызовом, он должен быть QueryResultMask

Вы должны использовать это:

db.query(...)
 .then(r => console.log(r))
 .catch(e => console.log(e))

Проверьте этот простой пример вставки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...