Restful Api Express postgres 数据库

2024-01-14

我正在使用node和express开发一个restful api,我的数据库是postgresql,我需要使用postgres包pg-promise。

我知道我需要将我的应用程序与 app.js 文件中的数据库连接,但我的问题是,我应该如何在我的端点中使用此连接。

我有路线并且正在使用控制器。

例如

app.js

//in this file, suppously I have to to the connection 
const db = pgp('postgres://john:pass123@localhost:5432/products');

app.use('/products', productsRoute);

products.js(路线)

 router.get('/', ProductsController.get_all_products);

products.js(控制器)

    exports.get_all_products = (req, res, next ) => {
        // Here i want to use de database connection to do the query to find all
        //products in the database
    }

我如何访问连接来执行类似的操作

db.any('SELECT * FROM products WHERE active = $1', [true])
    .then(function(data) {
        // success;
    })
    .catch(function(error) {
        // error;
    });

来自控制器。

Update

好的,我现在使用的是 node-postgres,第 10 页。我看到更好了,谢谢大家的建议。

我想创建一次数据库实例,并在任何地方调用它,特别是在控制器中

我可以使用 app.local 保存我的客户端吗?,连接,执行查询,然后关闭它。在任何地方都可以这样做


我没用过pg-promise.

如果有帮助,您可以使用Node.js 的 PostgreSQL 客户端 https://www.npmjs.com/package/pg。您还可以使用async/await用它。

您可以直接使用 Express 中间件来代替路由器,如下所示。

//app.js:

const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const port = 1234

const db = require('./dbconnector')

//...omitted for brevity`
// 'db' is exported from a file such as 
// dbconnector.js.
app.get('/products', db.getProducts) 


//In dbconnector.js:
const Pool = require('pg').Pool
const pool = new Pool({
  user: 'postgres',
  host: 'localhost',
  database: 'mydb',
  password: 'mypwd',
  port: 5432,
})

const getProducts = (request, response) => {
    pool.query('SELECT * FROM products ORDER BY id 
ASC', (error, results) => {
      if (error) {
        throw error
      }
      response.status(200).json(results.rows)
    })
  }

// ...omitted for brevity

module.exports = {
 getProducts 

}

对于模块化设计,请使用单独的文件(不是app.js/index.js/server.js)对于数据库连接作为最佳实践和require在你的主要app.js.

Here is help https://node-postgres.com/features/connecting on pg module.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Restful Api Express postgres 数据库 的相关文章

随机推荐

  • 数据解析后重新加载 UICollection 视图

    我正在尝试动态更新 uicollectionview 我用了这个很棒的教程 https stackoverflow com questions 31735228 how to make a simple collection view wi
  • Python中信号处理程序和atexit处理程序的调用

    我有一段Python代码如下 import sys import signal import atexit def release print Release resources def sigHandler signo frame rel
  • 指针有什么意义? [复制]

    这个问题在这里已经有答案了 当我可以声明变量时 C 中的指针有什么意义 什么时候适合使用它们 通过 C 和 C 在向函数传递变量方面的差异 可以更好地理解指针 是的 您可以传递整个变量或仅传递指向它的指针 行话分别是按值或引用 但是 如果变
  • 在 Firebase iOS SDK 中,每次删除子项时都会触发 .childAdded。我怎样才能阻止这个?

    我将一些数据存储在 Firebase 数据库中名为 通知 的节点下 当我将事件观察器添加到 通知 并将事件类型设置为 childAdded 时 每次将子级添加到 通知 节点以及每次从 通知 节点删除子级时 都会调用完成处理程序 首先 我不明
  • 生成器和返回生成器的函数之间的区别

    我正在用生成器调试一些代码并提出这个问题 假设我有一个生成器函数 def f x yield x 和一个返回生成器的函数 def g x return f x 他们肯定会返回相同的东西 在 Python 代码中互换使用它们时会有什么区别吗
  • 使用 SQL 查询或 Laravel SQL 查询生成器创建表/列组合

    我有一个现有的产品变化方案 我想创建每个生产时间 数量和变化选项的组合 我将通过访问产品的数量 生产时间 变化和变化选项来创建选择表单 表组 id title 1 rug 表天数 id group id day 1 1 1 2 1 2 3
  • 更新应用程序后应用程序图标没有变化

    收到报告称 更新我们的应用程序后 跳板图标没有更新 需要关闭然后打开设备才能使更改生效 当从实时版本更新到测试版本 通过 iTunes 以及从旧 实时 版本更新到最新实时版本 通过设备上的应用商店 时 会发生这种情况 这种情况并不常见 但我
  • R 中的堆叠条形图再现

    我试图在 R 中重现该图 但没有成功 但更多的岁月里 这是数据 title 2016 phased 2017 phased 2018 phased 2019 fully loaded Pillar 1 minimum requirement
  • hive 查询的简单 oozie 示例?

    我正在尝试将一个简单的工作流程转换为 oozie 我尝试过查看 oozie 的示例 但它们有点令人难以接受 实际上 我想运行查询并将结果输出到文本文件 hive e select from tables gt output txt 我如何将
  • React Native 横向模式仅适用于一页

    在 React Native 中是否可以让应用程序以纵向模式运行 但让一个页面以横向模式运行 我知道在 Xcode 中你必须一开始就选择纵向或横向 所以我对如何使应用程序中除一个页面之外的所有页面都变成纵向有点困惑 在 React Navi
  • 如何让用户输入两次以上?

    我是 C 新手 我试图了解如何利用 C 通用输入 cin 我正在尝试编写一个程序来检查句子的字符数量和输入句子中的元音数量 我已经成功完成了这一任务 但是当我尝试让代码再次运行一次时 出现了问题 当它再运行一次时 就不再允许第二次输入 我的
  • Python 中的静态方法和实例方法[重复]

    这个问题在这里已经有答案了 我可以将 Python 方法同时定义为静态方法和实例方法吗 就像是 class C object staticmethod def a self arg1 if self blah blah 这样我就可以同时调用
  • 记录 WCF 接口的最佳方式? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 因此 我正在使用 WCF 并且想要记录我的接口和服务 以便提供给另一家公司的内部应用程序 记录这些接口的最佳方法是什么 我更喜欢将文档与代码内联
  • Android 中的圆形按钮

    我想在 Android 程序中创建圆形按钮 我看过如何创建圆角的EditText https stackoverflow com questions 3646415 how to create edittext with rounded c
  • 在 Matplotlib 的条形图上显示负值的问题

    我正在尝试使用 Matplotlib 创建一个包含正值和负值的条形图 但在让负值显示在 Y 轴上时遇到困难 运行代码时 它将正确显示所有正值 以红色标记 但根本不显示负值 相反 我得到了标记为 y1 的字符串的正值的重复项 请参阅下面的图片
  • 如果每行包含不同数量的字段(数量很大),如何正确读取csv文件?

    我有一个来自亚马逊的文本文件 包含以下信息 user item time rating review text the header is added by me for explanation not in the text file d
  • 如何创建频道然后找到ID

    我正在创建一个频道message guild channels create 我该如何找到该频道的消息 ID 并在新创建的频道中发送消息 message guild channels create bug priority reportPr
  • JS中获取未知单键的对象的值

    如何获取具有未知单键的对象的值 例子 var obj dbm 45 我想在不知道其密钥的情况下获得 45 值 我知道我可以循环对象键 始终是一个 for var key in objects var value objects key 但我
  • 实现登录(身份验证)屏幕的最佳实践是什么?

    我想在我的应用程序中实现登录屏幕并寻找最佳实践 假设这段代码 public class LoginActivity extends Activity public void onCreate Bundle icicle super onCr
  • Restful Api Express postgres 数据库

    我正在使用node和express开发一个restful api 我的数据库是postgresql 我需要使用postgres包pg promise 我知道我需要将我的应用程序与 app js 文件中的数据库连接 但我的问题是 我应该如何在