Tag: sql

我应该如何做一个后续系统的SQL或NOSQL?

我想编程一个系统,用户可以跟随另一个用户,但我不知道是否应该用像mongodb或任何其他的nosql数据库,还是用sql(postgres)更好? 我知道用postgres我需要一个数据透视表,因为它是一个多对多的关系。 我以为我可以把用户collecion像{追随者:[user_id1,user_id2,user_id3]},我可以让他们更快一点。 在这种情况下,我可以通过他们的ID获得其他用户。 我可以得到这个用户的追随者和下面的人这样的。 是更快还是我错了? 我计划每个用户都可以有很多追随者。 此外,我需要这个应用程序可以收到许多要求,因此,性能是重要的。 我应该在这种情况下使用什么? 带有postgres或mongo的数据透视表? 顺便说一下,我正在使用Nodejs。 提前致谢!

Node.js和sqlite:在callback中同步

我试图编码以下逻辑: if account in the DB, then update fields else insert new row with data. 这是一个primefaces操作,所以我把它当做SQL事务(DB是sqlite3): BEGIN; SELECT rowid FROM Account WHERE email=?; — Depending on SELECT's result, run INSERT or UPDATE: INSERT INTO Accounts(email, name, phone) VALUES (?, ?, ?); UPDATE Accounts SET name=? phone=? WHERE rowid=?; COMMIT; 我决定在select的callback中运行insert或update 。 但是到目前为止,SQL语句不再同步! 在同步块结束和callback执行之间,可以执行任意的SQL语句。 db.synchronized(function() { […]

节点mssql更新查询,获取rowcount

我正在使用NodeJS包MSSQL( https://npmjs.org/package/mssql#cfg-node-tds )连接到MS SQL数据库并执行UPDATE查询。 我明白,如果UPDATE查询最终不会影响任何行,它仍然会返回成功事件。 如果零行受到影响,我想要以不同的方式处理成功事件,因为这不是查询的预期结果。 在做了一些研究之后,我发现在执行SQL查询时,可以使用@@ ROWCOUNT来获取受影响的行数,但是我还没有弄清楚如何在MSSQL Node包中使用它。 有没有人使用这个节点包,并处理更新查询我想要的方式? 谢谢!

从nodejs访问消息队列SQL Server

我在nodejs中写了一个webAPI。 我想公开一个socket.io到客户端,以便他们可以得到实时通知。 我要发送给客户端的信息存储在SQL Server 2008 R2数据库中。 我很清楚如何将数据从nodejs发送到客户端…我无法弄清楚如何将通知从SQL Server发送到nodejs? 似乎有一个可能的解决scheme使用来自Microsoft的新服务总线模块 ,但安装和pipe理服务总线看起来像是在寻找麻烦。 我读了很多关于nodejs的MQ解决scheme,比如node_redis , node_stomp等等,但是他们都没有直接和MSMQ或者SQL Server直接对话。 我是一个MQ世界的新手,但我想我会设法把我需要从SQL Server的数据到一个MSMQ队列,所以我的问题是, 我怎样才能从nodejs访问一个MSMQ队列? 谢谢。-

postgresql中的两个嵌套连接和数组join

我以前从来没有问过这个问题,我总是通过search最终偶然发现自己正在寻找的东西,但这里有很多事情要做,而且我的search能力已经到了尽头了……谢谢你的帮助/build议。 问题 我需要随时生成报告,说明我的组织中有多less“学生”已经进行了每个“评估”,以及与每个“评估”相关的标准。 学生总数提前计算并存储在assessment_report中 报告行需要join“评估”才能显示信息 标准有次级标准,但评估只知道次级标准。 评估有多个子标准,并将它们存储在一个ID数组中。 我试图以最高性能的方式做到这一点,最大限度地减lessPostgres的负载,但我不相信我已经实现了这个目标… 安装程序 服务器:运行Ubuntu的Amazon EC2 应用程序(服务器): Node.js(0.10.26) 应用程序(客户端): Angular.js(1.2.13) 数据库(查询): PostgreSQL(9.3.1) 数据库(Cache): MongoDB (希望将来可以caching报表) 表格 SQL FIDDLE 评估 _id int4 description text category varchar(60) sub_standards int4 ARRAY … assessment_report (预先计算的总和) assessment_id(FK) int4 client_id(FK) int4 students int4 completed int4 incomplete int4 … sub_standards _id standard_id(FK) int4 description varchar(255) … 标准 […]

JSON.stringifystring防止(我的)SQL注入?

我已经运行了一些获取用户提供的string的node.js代码,调用JSON.stringify(str)并直接将值注入到SQL语句中。 例如 var x = JSON.stringify(UNSAFE_USER_STRING); mysql_execute('UPDATE foo SET v = ' + x + ' WHERE id = 1'); 显然这是对JSON.stringify的滥用,但是这不是我的代码,作者希望在修补它之前看到攻击向量。 因为UNSAFE_USER_STRING是一个string,而不是一个对象,并逃避了显而易见的"和\如果有一个严重的问题并不明显 这个代码安全吗? 如果不是,有人可以certificate什么是不安全的input? 谢谢!

DH Key太小,Google CloudSQL SSL

随着openssl和nodejs的最新更新,NodeJS不再可能连接到Google Cloud SQL over SSL。 OpenSSL版本中,节点0.12.6中的tls库现在拒绝任何具有512或1024的DH密钥长度的SSL密钥。但是Google Cloud SQL不允许我生成/上传自己的SSL私钥,而自动生成的似乎被拒绝了。 当我尝试连接到云SQL时,出现以下错误消息: Error: 140735270576896:error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small:../deps/openssl/openssl/ssl/s3_clnt.c:3377: 我正在使用node-mysql2库进行连接 这里有一个可能的重复的问题: SSL操作失败,代码1:dh键太小但是他们没有讨论解决这个问题的方法。

更新model.update上的错误

未处理的拒绝types错误:未定义不是函数 错误,当我试图更新我的表在MySQL上面的续集。 这里是触发错误的代码片段,评论一个令人惊讶的工作: topic.update( { name: "adfa"}, { where: { tid: 1} } ); //topicAttribute.update({ value: "name 2"},{where: {TOPIC: 2,name: "nadpis" }}); 现在这是我的两个模型: var topic = sequelize.define('topic', { tid: { type: Sequelize.INTEGER, field: 'tid', primaryKey: true }, name: { type: Sequelize.STRING, field: 'name' }, added: { type: Sequelize.DATE, field: 'added' }, addedBy: { type: Sequelize.STRING, […]

NOR与CaminteJS查询

我想用CaminteJS做一个查询,基本上只是想获得一个completed工作,哪个status既不running也不queued 。 请帮忙,非常感谢! Result.findOne() .where('job_id', job_id) .where('status').ne('running') .where('status').ne('queued') // looks like this line is overriding the last line .sort('-number') .run({}, callback); 我也尝试mongoose的方式,但仍然不工作。 .nor([{status: 'running'}, {status: 'queued'}]) // not a caminte api .where('status').nin(['running', 'queued']) // not working .where('status').ne('running').ne('queued') // not working

用SQL或应用程序语言定义数据库模式会更好吗?

我有2个服务正在运行。 一个是Node.js应用程序,另一个是PSQL数据库。 我不知道我应该在哪里定义我的数据库模式。 一些像Sequelize这样的库用应用程序语言来定义它(在这种情况下是javascript)。 var User = sequelize.define('user', { firstName: { type: Sequelize.STRING, field: 'first_name' // Will result in an attribute that is firstName when user facing but first_name in the database }, lastName: { type: Sequelize.STRING } }); 但是我认为在纯SQL中定义它们会更好 CREATE TABLE users ( id SERIAL, first_name varchar(85), PRIMARY KEY (id) ); 这样,其他其他平台上的其他应用程序就可以使用数据库,而不会与模式混淆。 在我看来,数据库定义应该独立于应用程序的语言。 有什么我不考虑? […]