Tag: sql

繁琐的连接事件没有在function上发射

我正尝试使用Tedious在节点js中连接到本地SQL Server数据库。 function connectToSql() { sqlConnection.on('connect', function (err) { // If no error, then good to go… if (err) { console.log(err); } else { console.log('connected to SQL!'); executeSelectStatement(); } }); } 当我在声明后不久调用这个函数时,它的工作正常,打印“连接到SQL!”。 但是当我调用SocketIO.Server这个函数的“连接”事件时,它没有进行sql调用。 我的代码如下: ioServer.on('connection', function (socket: SocketIO.Socket) { console.log('a user connected'); connectToSql(); }); 它只打印“一个用户连接” 有什么build议,为什么会这样呢?

如何一次插入两张表? 准备好陈述

如何一次插入两个表? 我需要插入第二个表user_information字段user_id与第一个表user插入返回id ,我发现这个答案,但我找不到如何与params准备语句 var dbQuery = 'WITH insertUser AS ( INSERT INTO "user" (status, create_date) VALUES ($1, $2) RETURNING id ) , insertUserInformation AS ( INSERT INTO user_information (user_id, email) VALUES ($3, $4) ) '; yield queryPromise(dbClient, dbQuery, [status, timestamp, ??, email]); 皮克

在Node环境中导入SQL转储

我想要一个npm脚本来创build/configuration/ etc。 最后导入一个SQL转储。 整个创build,configuration等都在工作,但是,我无法导入工作。 数据永远不会被插入。 这就是我所拥有的(永远不要嵌套的callback,因为他们将变成承诺): connection.query(`DROP DATABASE IF EXISTS ${config.database};`, err => { connection.query(`CREATE DATABASE IF NOT EXISTS ${config.database};`, err => { connection.query('use DATABASENAME', err => { const sqlDumpPath = path.join(__dirname, 'sql-dump/sql-dump.sql'); connection.query(`SOURCE ${sqlDumpPath}`, err => { connection.end(err => resolve()); }); }) }); }); 我也试过以下的Sequelize(ORM): return new Promise(resolve => { const sqlDumpPath = path.join(__dirname, […]

节点mysql插入到许多表中

我使用nodejsparsing一个csv文件,并将其保存在MySQL中的信息。 我试图插入数据到多对多的表,但希望ID插入到数据库中用于anohter查询? con.query("INSERT INTO TransactionDescription SET ? ON DUPLICATE KEY UPDATE Description= VALUES(Description)", trandesc, function(err, res) { if (err) throw err; }); 我可以返回生成的ID,所以我可以在这个查询中使用它们吗? con.query("INSERT INTO Transaction SET ? ", tran, function(err, res) { if (err) throw err; });

与jQuery和节点js的SQL Server连接

我正在使用节点js连接到只有Windows身份validation的SQL Server。 数据库存储在一台集中式机器上。 数据库返回一些JSON数据,我把它放在某个地址( http://10.2.9.208:8081/me )。 这是我的电脑的地址,即( https:// localhost / me ),我使用jQuery调用来检索它。 这jQuery调用是从一个HTML页面检索jsonp格式的数据,以避免交叉来源问题。 这是我在页面index12.html中的jQuery调用 $.get("http://10.2.9.208:8081/me?callback=?", function (data) { dataset_module_errors = data; }); 连接string在页面app.js中 我用来连接数据库的连接string是 var config = { server: '10.2.12.153', database: 'DFMProAnalyticsCopy', // my table is within this server port: 1433 // default port number }; 这会引发错误“LOGIN ERROR”,因为它认为用户名和密码是“' – >”空string。 所以我最终使用这个Windows身份validation var config = "Driver={SQL […]

在Sails应用程序中使用Sequelize作为ORM使用原始查询

我正在使用Sequelize作为ORM工具的sails应用程序。 应用程序和Sequelize之间的初始集成是通过sails-hook-sequelize插件来实现的。 这个方法迄今为止工作得很好,定义和使用模型没有问题。 然而,当我想将一个View定义为一个Sequelize对象时,我遇到了一个障碍。 Sequelize没有(但)有一个简单的方法来做到这一点。 我发现的工作是执行一个原始查询,并用结果填充一个表。 现在我来到第二个路障和实际问题本身。 我如何简单地执行一个sequelize.query内我的帆应用程序? 在独立的节点应用程序使用sequelize我没有问题。 然而,这个风帆应用程序已经离我远去,我不知道什么对象实际上调用。查询! 我在找什么简单的东西 Sequelize.query("SELECT * FROM `Document.MyView`", { type: Sequelize.QueryTypes.SELECT}) 可悲的是,以上给我sequelize.query is not a function 我有一个connections.coffee文件,其中定义了数据库连接。 它被命名为“核心”,但是当我尝试Core.query我得到Core is undefined 似乎我错过了将太多东西堆叠在一起的简单而基本的东西。

创build一个logging和一个关联的logging

问题: 想象一下,我有两个相关的模型, Library 有很多 Book : var Library = sequelize.define('Library', { title: Sequelize.STRING, description: Sequelize.TEXT, address: Sequelize.STRING }); var Book = sequelize.define('Book', { title: Sequelize.STRING, description: Sequelize.TEXT, publish_date: Sequelize.DATE }); Library.hasMany(Book); 现在,为了创build一个Library和一个相关的Book ,我做: Library.create({ name: 'Roan Library', address: '123 Any St' }).then(function (library) { Book.create({ title: 'Reading with Time', description: 'A fun jaunt in reading', […]

程序数据库代码与多个数据库调用

所以这是一个相当高层次的问题 我正在devise一个数据库,我不确定在哪里把程序逻辑pipe理复杂的查询。 我看到两个可能的select,如下所示: 1)定义过程数据库代码中的逻辑。 例如,在数据库(例如:PLpgSQL)中: create function A … create function B … create function C … create function main { a = select * from A() … b = select * from B() … where a … c = select * from C() … where b … return c; } 然后在周围的服务器环境中(例如:Node.js): result = query('main'); […]

在我的WHERE上使用IN来截断不正确的DOUBLE值

到目前为止,我还没有find答案…也许这里有人可以帮助。 我收到以下错误:错误运行查询… ::::错误:ER_TRUNCATED_WRONG_VALUE:截断不正确的DOUBLE值:'2,4' 使用nodejs中的mysql模块运行查询时会发生这种情况。 查询如下: selectQ = "UPDATE usr SET pass = ?, last_updator = ?, last_update = NOW() WHERE id IN (?);" 我这样称呼它: con.query(selectQ,[hash,lupdator,usrs], function (err, rows) {…}); 这工作正常,只要我只有一个数字在usrsvariables,但是当我有一个数字列表(在连接的string,看起来像“2,4”)我得到上面的截断错误。 有任何想法吗? 谢谢! 最终结果: 根据正确的答案,使用准备好的声明为我的“IN”没有工作。 我相信,如果我传递一个单引号string的列表来查找基于文本的数据types,但是查询是将转义的INT传递为文本字符types,那么这样做会正常工作。 Anyhoo …我只是validation我的数组内的所有项目是数字,如果他们是我join数组,并将其传递到准备好的查询。 我不相信这让我暴露在注射,但如果我错了,随时纠正我。 这是我的代码: for(i = 0; i < usr.length; i++){ if(!IsNumeric(usr[i])){ callback("Password hash failed, server side issue.",null); return; } […]

保护自己免受nodejs中的sql注入的最好方法

这是设置。 我使用ajax发送一个POST,在这里我将过程的参数发送到nodejs服务器。 在这个特定的情况下,用户名和代码。 此POST将request.get调用到执行使用这两个参数的过程的Web服务。 例如 app.post('url/:username/:code', function(req,res,next){ var procedure = 'EXECUTE procedureName'+req.params.code; request.get('myWslink/myService.asmx/service? callback=&userName='+req.params.username+'&procedureName='+procedure, function(){}); }); 前端用户无法看到我的web服务url,我的request.get url或我的过程名称,但他仍然可以看到正在发送的参数(用户名,代码),他可以更改这些参数,使他执行一个他不应该执行的过程。 他也可以多次调用一个POST请求,如果是一个插入过程,用一堆垃圾填充数据库。 保护自己免受这些攻击的最好办法是什么?