где пункт в безсерверной структуре + postgresql - PullRequest
0 голосов
/ 21 октября 2019

Я разработчик мобильных приложений, пытаюсь развернуть Restful Api для тестирования с использованием безсерверной инфраструктуры и postgresql. Мне удается заставить его работать, но только с помощью простых CRUD (getAll, getById, delete, insert) тех функций, которые есть в postgresql. Что если мне нужно выполнить запрос типа «Выбрать * из имени таблицы, где x = xx»

Вот что я делаю, чтобы получить пользователя по идентификатору в моем handler.js

module.exports.getUser = (event, context, callback) => {
  context.callbackWaitsForEmptyEventLoop = false;
  db.getById('users', event.pathParameters.id)
    .then(res => {      
      callback(null,{
        statusCode: 200,
        headers: {
          "Content-Type": "application/json"
      },
        body: JSON.stringify(res)
      })
    })
    .catch(e => {
      callback(null,{
        statusCode: e.statusCode || 500,
        body: "Could not find User " + e
      })
    })
};

что еслиМне нужно, чтобы пользователи, где они принадлежат к классу А? Мне нужно написать нормальный запрос и передать его, чтобы он мог быть выполнен.

1 Ответ

0 голосов
/ 21 октября 2019

Полагаю, вы используете ORM для пост-процесса. Вы можете проверить документы поставщика ORM, который вы используете.

Для использования запросов я предлагаю node-postgress

node-postgres - это коллекция модулей node.jsдля взаимодействия с вашей базой данных PostgreSQL.

затем пример с использованием node-postgress:

exports.handler = async (event) => {
  const { Client } = require('pg')  //  Needs the nodePostgres Lambda Layer
  const client = new Client()
  await client.connect()

  const res = await client.query(
    'SELECT $1::text as message', 
    ['Hello world!'])
  console.log(res.rows[0].message)  // Shows "Hello world!""
  await client.end()

  const response = {
      statusCode: 200,
      result: res.rows[0].message
  };
  return response;
};

Примечание: вы можете написать любой запрос.

...