Как правильно использовать запрос для вставки в таблицу в nodejs API? - PullRequest
0 голосов
/ 07 января 2019

Я разрабатываю спокойный Api nodejs, мой первый шаг состоял в том, чтобы использовать структуру данных, и все процессы были правильными, но теперь я хочу реализовать crud с постоянством, используя postgresql, и я застрял вокруг конечной точки post, мой запрос не проходит, несмотря на мои усилия.

Get endpoint работает нормально, все необходимое уже установлено, просто заблокировано на конечной точке post. Найдите ниже мой код

router.post('/', function(req, res, next) {
pool.connect(function (err, client, done) {
if (err) {
    console.log("Can not connect to the DB" + err);
}
client.query('INSERT INTO users(firstname, lastname, othername, email, 
phoneNumber, username, registered, isAdmin) VALUES($1, $2, $3, $4, 5$, 
6$, 7$, $8) returning *',
[req.body.firstname, req.body.lastname, req.body.othername, 
req.body.email, req.body.phoneNumber, req.body.username, 
req.body.registered, req.body.isAdmin ], 
function (err, result) {
     done();
     if (err) {
         console.log(err);
         res.status(400).json({
           status : 400,
           error : err
         });
     }
     res.status(200).json({
       status : 200

      });
  });
});  

вместо вставки данных в мою базу данных, я получаю следующую ошибку

 {
"status": 400,
"error": {
    "name": "error",
    "length": 106,
    "severity": "ERREUR",
    "code": "42601",
    "position": "126",
    "file": "scan.l",
    "line": "1134",
    "routine": "scanner_yyerror"
}
}

При работе в Postman, и console.log (err) показывает это

{ error: erreur de syntaxe sur ou près de « $ »
at Connection.parseE (E:\Bootcamp_prep\MAPI\node_modules\pg\lib\connection.js:554:11)
at Connection.parseMessage (E:\Bootcamp_prep\MAPI\node_modules\pg\lib\connection.js:379:19)
at Socket.<anonymous> (E:\Bootcamp_prep\MAPI\node_modules\pg\lib\connection.js:119:22)
at Socket.emit (events.js:182:13)
at addChunk (_stream_readable.js:283:12)
at readableAddChunk (_stream_readable.js:264:11)
at Socket.Readable.push (_stream_readable.js:219:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)  name: 'error',

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вопрос уже исправлен ... это связано с прописными буквами в столбцах таблицы .. posgresql не работает с прописными буквами в столбцах .. thx any был

0 голосов
/ 08 января 2019

Я не уверен, как работают параметры как "$ 1, $ 2, $ 3", но я уверен на 100%, если вы замените их на "?,?" Синтаксис это будет работать. Что-то вроде:

const query = 'INSERT INTO users
 (firstname, lastname, othername, email, phoneNumber, username, registered, isAdmin) VALUES(?, ?, ?, ?, ?, ?, ?, ?)';

client.query(query,
[req.body.firstname, req.body.lastname, req.body.othername, req.body.email, req.body.phoneNumber, req.body.username, req.body.registered,req.body.isAdmin], 
function(){...})
...