Tag: sql

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的方法?

具有公共expression式(WITH子句)支持的基于节点的SQL生成器

我正在构build一个需要使用CTE查询Redshift数据库(基于postgres 8.0.2)的Node.js应用程序。 不幸的是,到目前为止,我查看的SQL查询构build器( node-sql , knex.js和sequelize)似乎不支持公用表expression式(CTE)。 我在Ruby中使用Jeremy Evans的Sequel gem获得了巨大的成功,它有一个with两个参数的方法来定义表的别名和数据集引用。 我想在Node中有类似的东西。 我错过了Node.js SQL查询构build器的任何明显的竞争者吗? 从我所能告诉的是,这四个最明显的是: 节点-SQL nodesql(没有postgres支持?) knex.js sequelize

如何将标签映射到标签同义词?

我正在构build一个系统,用户将标签与post相关联,与SO不同。 我有一个麻烦实现标签同义词的位置 。 在这里我有一个名为Tags的表格: | TagName | |————| | Python | | JavaScript | | Node | 而我又有一个叫做TagSynonyms的人 : | SynonymId | SourceTagName | TargetTagName | |———–|—————|—————| | 1 | Py | Python | | 2 | Python2 | Python | 服务器使用Node实现,用户input一些标签作为逗号分隔的string: var input = 'Py,Flask' var tags = request.tags.split(','); 在这种情况下,用户已经input了标签Py ,根据TagSynonyms表,它应该被映射到标签Python 。 第二个标签, Flask没有同义词,应该保持不变。 […]

使用nodejs mssql进行连接时出现输出问题

我是新来的node.js ,我试图连接到系统caching数据库。 这里是我的,基于文档中的示例代码: var sql = require('mssql'); console.log("Connecting…"); sql.connect("mssql://username:password@server:1234/DB").then(function(){ console.log("connected"); }).catch(function(err) { console.log(err) }); 如果我把错误的服务器或端口,我得到一个Failed to connect错误,但无论我input错误(用户名,密码,数据库)我得到零输出。 更重要的是,当所有的数据是正确的,我永远不会得到connected输出。 这是与caching和mssql库的兼容性问题吗? 还是我做错了什么?

使用PostgreSQL / NodeJS将JOIN表作为结果数组

我正在创build一个应用程序,用户可以创build问题,其他人可以upvote / downvote他们。 以下是我的sql模式的一部分: CREATE TABLE "questions" ( id SERIAL, content VARCHAR(511) NOT NULL, created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), CONSTRAINT pk_question PRIMARY KEY (id) ); CREATE TABLE "votes" ( id SERIAL, value INT, question_id INT NOT NULL, CONSTRAINT pk_vote PRIMARY KEY (id), CONSTRAINT fk_question_votes FOREIGN KEY (question_id) REFERENCES questions (id) MATCH […]

node.js + postgres数据库事务pipe理

我们有一个现有的SQL数据库,并且正在使用这个postgres驱动程序模块编写一个使用直接SQL访问它的node.js服务器: https://github.com/brianc/node-postgres 到目前为止,我找不到与postgres一起使用的事务pipe理节点模块。 有人知道吗? 最好有一些现实世界的使用? 其次,在更高层次上,我们正在评估node.js是否可以实际上将Javareplace为可能处理卷的服务器的真实解决scheme。 交易pipe理是我们必须解决的问题之一。 所以一些洞察也是有用的。 目前,我只是在节点服务器请求的开始处发出一个sql BEGIN,最后是一个ROLLBACK或COMMIT。 但是,我(或许显然)不熟悉与SQL事务pipe理有关的现实世界问题。 如果有人能简单地解释事务pipe理框架解决的问题,我会觉得它很有用。 编辑:我正在使用postgres驱动程序的内置连接池机制,并在http请求内的所有查询发出在从池中获得的同一连接。 首先发布BEGIN,然后无论具体的http请求是什么,然后是COMMIT或ROLLBACK。 谢谢。

Sequelize:按列更新它的旧值

我正在尝试更新一组数据使用Sequelize由此查询 Users.update({ flag: 'flag & ~ 2' } , { where : { id :{ gt : 2 } } }) 生成的查询是 UPDATE `users` SET `flag`='flag & ~ 2' WHERE id > 2 但应该是 UPDATE `users` SET `flag`=flag & ~ 2 WHERE id > 2 所以我的问题是如何更新数据的旧值 问候

更改Google容器引擎群集的权限

我已经能够在开发人员控制台中成功创build一个Google容器集群,并已经部署了我的应用程序。 这一切都开始良好,但是我发现我无法连接到云SQL,我得到; "Error: Handshake inactivity timeout" 经过一番挖掘,我没有任何问题从App Engine或我的本地机器连接到数据库,所以我觉得这有点奇怪。 那时我注意到了集群权限… 当我select我的集群时,我看到以下; Permissions User info Disabled Compute Read Write Storage Read Only Task queue Disabled BigQuery Disabled Cloud SQL Disabled Cloud Datastore Disabled Cloud Logging Write Only Cloud Platform Disabled 我真的希望在我的容器引擎节点中使用云存储和云SQL。 我已经允许在我的项目设置中访问这些API中的每一个,并且我的Cloud SQL实例正在接受来自任何IP的连接(我之前在App Engine上的Managed VM中运行过Node),所以我的想法是Google显式禁用这些API的。 所以我的两个问题是: 有没有什么办法可以修改这些权限? 有没有什么理由让这些API被禁用? (我假设必须有) 任何帮助非常感谢!

续集:连接两次相同的表

背景: 我有一个与Userlang具有一对多关系的Userlang 。 例如: userlang.id userlang.userid userlang.lang +———–+—————+————-+ 1 1 EN 2 1 FR 3 1 IT 4 2 EN 5 2 DE 6 3 IT 我想select至less有一个userlang.lang=EN. 所有用户和他们的userlang userlang.lang=EN. 所以,我不能使用以下查询: Select USERS.id from USERS inner join USERLANG on USERS.ID=USERLANG.USERID where USERLANG.LANG="EN" 因为它只会selectlang="EN"的Userlangs行,而我想select每个用户的所有userlang行,其中至less有一个lang="EN" 我已经可以用SQL以两种方式编写这样的查询: 使用子查询: Select * from USERS inner join USERLANG on USERS.ID=USERLANG.USERID where USERS.ID […]

错误:ER_BAD_FIELD_ERROR:节点js中“字段列表”中的未知列“asd123”

当我尝试在phpmyadmin中更新表时收到此错误 谁能告诉我什么是错的请 这是桌子 create table ms_registereduser(userID Varchar(10),socketID Varchar(255)); 这是我的server.js var http = require("http"); var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '', database : 'pushnotificationdb' }); var userID = "1234567890", socketID = "asd123"; http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(1111); connection.connect(); connection.query('callpushnotificationdb.spUpdateSocketID('+userID+','+socketID+');').on('end',function() { console.log('User […]