Tag: postgresql

哪个NodeJS框架支持关系数据库?

我开始使用NodeJS进行服务器端开发,我发现了很多有希望的框架,但是不能说出哪些支持关系数据库(即Postgres)。 有任何想法吗? 服务器端MVC框架是首选。

来自JavaScript的PostgreSQL套接字(HTML5)

我正在寻找直接连接的选项 – 无需Web服务器或中间件 – 从Web浏览器客户端使用JavaScript连接到PostgreSQL服务器。 在github上,我发现了三个项目: node_postgres 节点的Postgres Postgres的-JS 他们似乎都早,但至less有点积极的发展。 他们都做大致相同的事情吗? 他们甚至在做什么? 有没有人有任何经验,可以推荐一个比其他人?

节点j的模式和数据迁移

有什么工具类似于Django Souh ,但是对于Node? Noe我正在与Sequelize合作,如果我没有错,Sequelize没有select根据现有模型创build迁移文件。 所以,创build一个新的模型/表格的步骤是: 用sequelize model:create <model meta> 。 编辑生成的迁移文件 – 添加实际代码,用于在数据库下创build表格。 使用sequelize db:migrate运行sequelize db:migrate 。 我正在寻找能够创build基于现有模型的迁移文件的东西,类似于南方可以为Django所做的那样。 有什么select吗?

将对象数组转换为与nodejs / pg / unnest兼容的数组

关于从nodejs / pg中的多个参数中更新多行 ,我需要运行以下命令: update portfolios p set votes = s.votes from unnest(array[(5, 1), (15, 1), (25, 2)]) s (votes int, id int) where p.id = s.id 我的数组是1美元,如下所示: update portfolios p set votes = s.votes from unnest($1) s (votes int, id int) where p.id = s.id 不过,我的数组最初由对象组成,如下所示: [{votes: 5, id: 1}, {votes: 15, id: 1}, […]

数据库连接池处理节点js应用程序的最佳做法?

我指的是下面的node-postgres包,但我想这个问题是相当通用的。 有这样一个简单的例子 ,你1)从顶级http请求处理程序池中获取(连接)一个连接(客户端),2)做该处理程序内的所有业务,3)释放它回到池之后,重做。 我猜这个例子可以正常工作,但是一旦你的应用程序变得稍微大一些,这个问题就会很快出现。 我正在考虑这两个选项,但我不太确定… 在任何需要与db进行交谈的地方执行“获取客户端+工作+发布客户端”的方法。 这似乎是一个不错的select,但是不会导致每个顶级http请求吃掉多个连接/客户端(在我的项目的许多地方有并行的asynchronous数据库调用)? 尝试将一个全局共享引用分配给一个客户端/可通过require()访问的连接 这是一个好主意,实际上可行吗? 是否可以很好地处理在所有丑陋的情况下“回到池释放”(例如并行asynchronous的东西的错误)? 谢谢。

我怎样才能将一个JSON数组从NodeJSstream到postgres

我试图通过接收来自客户端的请求每个批量插入尝试10,000条logging(使用sequelize .js和bulkCreate() )来插入几百万条logging(约6个字段/列bulkCreate() ) 这显然不是一个好主意,所以我试着研究node-pg-copy-streams 但是,我不想在客户端发起更改,在这里发送一个json数组 # python data = [ { "column a":"a values", "column b":"b values", }, … # 10,000 items … ] request.post(data=json.dumps(data), url=url) 在nodejs服务器端,我将如何stream接收request.body在以下骨架? .post(function(req, res){ // old sequelize code /* table5.bulkCreate( req.body, {raw:true} ).then(function(){ return table5.findAll(); }).then(function(result){ res.json(result.count); });*/ // new pg-copy-streams code pg.connect(function(err, client, done) { var stream = […]

node-postgres:无法从postgres CLI发出NOTIFY作业

我有一些代码可以在PHP中正常工作。 从postgres CLI我发出一个 NOTIFY job; Postgres(我可以在PHP客户端中看到它)正确提出通知,但无法在节点中读取它。 JS: var pg = require('pg'); var conString = "your postgres information"; var client = new pg.Client(conString); client.connect(); client.query('LISTEN job'); client.on('notification', function(msg) { console.log('data'); }); 我宁愿保持简单。 是在这样的postgres做程序的唯一方法?

NodeJS在多次请求后无限期地挂起

我有一个nodeJS(v.0.10.23)代理连接到postgres数据库(node-postgres模块v2.1.0),以及返回各种json数据的pgpool-II。 回到当天,这是如何处理连接错误: var after = function(callback) { return function(err, queryResult) { if(err) { response.writeHead(500, _header); console.log("ERROR: 500"); console.log(err); return response.end(JSON.stringify({error: err})); } callback(queryResult) } }; 基本上它所做的是在没有错误的情况下消耗响应。 可以在这里find一个深入的解释: Node js – http.request()连接池的问题 使用上面的函数,我有这样的东西: pg.connect(_conString, after(function(err, client, done) { client.query(sql, after(function(result) { … done(); } 由于当函数传递到after()scallback函数时上下文丢失了,所以我放弃了使用pg.connect()传递的先天done()方法的能力。 删除后解决了这个问题,但随后,在适当的时间,并有相当数量的客户端拉数据,节点将挂起,直到它被重置。 是否有消耗各种asynchronous响应的不同方式? 或者可能是一种将pg.connect上下文传递给callback的方法?

续集和快速会话模型

我试图让快速会议与postgres工作。 经过几个小时的debugging,我已经解决了所有的问题,但只有一个。 一切正常,但以下: 如果我在pgAdmin中运行这个查询,我的会话将正常工作 CREATE TABLE "sessions" ( "sid" varchar NOT NULL COLLATE "default", "sess" json NOT NULL, "expire" timestamp(6) NOT NULL ) WITH (OIDS=FALSE); ALTER TABLE "sessions" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE; 如果我使用sequelize创build模型,那么它不会保存会话。 我敢肯定,这是显而易见,我缺less我的模型定义的一些部分,并会感激任何input。 var Sessions = database.define('sessions', { sid: { type: Sequelize.STRING, primaryKey: true }, expire: { type: […]

如何使用Node.js net.Socket与Postgresql数据库通信就像使用terminal一样

在postgresqlterminal中,我可以键入一个命令并获得响应。 例如: #创build数据库新数据库; 创build数据库 上面我在terminalinput命令“create database newdatabase;”数据库程序响应“CREATE DATABASE” 我正在尝试做同样的事情,但使用节点net.Socket。 换句话说,我想发布命令到我在localhost:5432上运行的postgresql服务器,并通过套接字获取响应。 我的程序成功地build立了与postgresql服务器的连接,并成功地将数据刷新到内核,但是我从来没有得到响应(数据监听器永远不会被触发)。 新数据库也不会被创build。 我也快速浏览了wireshark上发生的事情。 它看起来像sockets得到设置。 我看到我的数据以明文forms发送。 postgresql服务器然后发送一个ACK FIN ACK。 我确认FIN ACK,然后postgresql服务器最后一次确认。 所以我知道postgresql服务器不会发回任何数据。 我的问题是,为什么postgresql服务器会忽略我发送的命令,为什么postgresql服务器不会向我发回任何数据,即使这些数据只是一个错误。 const net = require('net'); const BlueBird = require('bluebird'); BlueBird.coroutine(function* () { var host = "127.0.0.1"; var port = "5432"; var idle_timeout = 10000; var MySocket = new net.Socket(); MySocket.setTimeout(idle_timeout); var data = yield […]