如何在 Angular 中使用 pg 节点包

Posted

技术标签:

【中文标题】如何在 Angular 中使用 pg 节点包【英文标题】:How to use the pg node package in angular 【发布时间】:2018-08-14 17:39:31 【问题描述】:

情况

嗨,我是 Angular 的新手,我一直在按照教程做一些项目,然后我尝试开始自己的项目来练习我的 Postgres 和新获得的 Angular“技能” em>。

我正在尝试做一个使用node pg module 连接到 postgres 数据库的 web 应用程序。

(我知道 sequelize 是一个东西,它似乎比 pg 工作得更好,但 AFAIK sequelize 不允许你通过它运行纯 postgres 命令) 如果我错了,请纠正我关于这个

问题

这是我卡住的地方,我正在尝试按照文档中的说明进行操作,但它似乎无法正常工作。

我试过了:

const Client = require('pg'); import Client from 'pg'; 还尝试将其导入到 .angular-cli.json 数组中的 scripts

所有这些都失败并出现类似的错误

 ERROR in ./node_modules/pg/lib/connection-parameters.js Module not found: Error: Can't resolve 'dns' in '[...]\node_modules\pg\lib'
 ERROR in ./node_modules/pg/lib/native/client.js Module not found: Error: Can't resolve 'pg-native' in '[...]\node_modules\pg\lib\native'

但似乎没有任何工作正常。我这样做完全错了吗?

另外,很愚蠢的问题。我相信 Angular 可以在客户端完成所有工作,这对于产品中的数据库访问来说是一个巨大的安全风险。如果这是真的,有没有办法编写服务器端 .ts 服务?还是服务端?

【问题讨论】:

不要将服务器端库与客户端库打包在一起。 pg 模块仅适用于服务器端。 【参考方案1】:

您可以使用已编译的 ts 在节点中编写服务器端代码,但可能不能使用 angular。

【讨论】:

所以我需要用 node 创建一个后端,然后提供我自己的 API 端点? 这是我的理解,但就我个人而言,我使用 php 构建我的 API。 你知道任何好的资源来弄清楚如何创建它们吗?我不介意 PHP,但我宁愿避免它。

以上是关于如何在 Angular 中使用 pg 节点包的主要内容,如果未能解决你的问题,请参考以下文章

如何在离线时安装 npm 包?

如何在节点脚本中重用 Angular 6 API 服务?

Angular 导入节点包

首次使用 Node 和 pg 创建数据库后如何创建表

如何调试 Angular 通用?

如何从 angular.js 数组中删除元素/节点