Возвращая запрос Postgres в Node, сервер не будет работать - PullRequest
0 голосов
/ 12 марта 2019

Я создал простой JS-файл, который содержит локальный сервер, а затем использует Node для чтения БД и возврата результатов.Моя цель - создать страницу, которая просто возвращает строки, а затем может создавать новые.

Проблема в том, что консоль регистрирует результаты, но сервер не подключается.Я могу создавать файлы, которые просто размещают серверы, но включение запроса останавливает работу сервера.Как сохранить мой запрос на сервере?

Вот код:

    const pg = require("pg");
    const pool = new pg.Pool({
    user: "James",
    host: "127.0.0.1",
    database: "makersBnb",
    password: "",
    port: "5432"});

    pool.query('SELECT * FROM listings', (err, res) => {
    console.log(err, res);
    pool.end();
    });

В таблице 2 строки.Вот консоль:

Result {
  command: 'SELECT',
  rowCount: 2,
  oid: null,
  rows:
   [ { id: 2,
   listing_name: 'testListing',
   price: '5',

   description: 'description',
   owner_name: 'me',
   email: 'private@email.com',
   phone_num: '07777777771' },
 { id: 1,
   listing_name: 'a',
   price: 'b',
   description: 'c',
   owner_name: 'd',
   email: 'e',
   phone_num: 'f' } ],


_parsers:
   [ [Function: parseInteger],
     [Function: noParse],
     [Function: noParse],
     [Function: noParse],
     [Function: noParse],
     [Function: noParse],
     [Function: noParse] ],
  RowCtor: null,
  rowAsArray: false,
  _getTypeParser: [Function: bound ] }

1 Ответ

1 голос
/ 12 марта 2019

Надеюсь, что мой проект может дать вам некоторое представление.

в файле postgreSQL:

const {Pool} = require('pg');
const config = require('../config');
const postgre = config.postgre;
const pool = new Pool(postgre);
module.exports = {
    getList: (/* could add params here */ callback) => {
        let param = []; //if there is params add to here in sequence,
        // for text using let param = [email]
        let query = 'select * from listings;'
        // text is sample using params;
        let text = 'select * from users where email=$1';
        return pool.query(text, param, callback)
    },
    // here you can add more functions as you like.
}

В app.js

const db = require('/postgresql') //import the file abave
app.get('/getList',(req,res)=>{
    db.getList((err,messageFromDB)=>{
        if (err) {
            console.log(err);
        } else {
            res.send(messageFromDB.rows);
        }
    })
}

Это будет делать каждый раз, когда вы вызываете / getList и база данных (сервер node.js) возвращает результат. или вы можете просто console.log результат или сделать что-то еще.

ОБНОВЛЕНИЕ: когда вы просматриваете мой ответ и просматриваете ваш вопрос, вам не следует звонить pool.end();, если вы хотите, чтобы сервер продолжал работать.

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