Tag: node mysql

Node.JS + MySQL连接池需要?

使用node-mysql模块,有两个连接选项 – 一个连接和一个连接池。 build立与MySQL数据库的连接,为所有请求使用单个全局连接,或为每个请求创build一个连接池并从池中取出一个连接池的最佳方法是什么? 还是有更好的方法来做到这一点? 我是否会针对所有请求使用单个共享连接来运行问题?

使用node-mysql创build同步查询

我试图确保一个MySQL查询导致另一个,并没有完成,直到所有的子查询完成。 因此,例如,我从一个select和stream行开始,并执行该行结果的后续查询。 这可以通过callback来实现,但是我最终会耗尽内存,所以我想减慢进程并运行批处理,但是由于调度的asynchronous性,我不能保持相同的状态并结束在所有的行都被处理之后进行连接。 这是一个例子: var query = conn.query('select id from table1 limit 10'); query.on('result', function(row){ console.log('query1', row); var query2 = conn.query('select id from books where id = ? ', [row.id]); query2.on('result', function(row2){ console.log('query2', row2); var query3 = conn.query('insert into test (id) values (?)', [row2.id]); query3.on('result', function(row3){ console.log(row3); }); }); }); query.on('end', function(){ conn.end(); }); 以上失败,因为在初始查询结束后仍然有行要在query3中处理。 […]

重复密钥更新节点Mysql只更新唯一行

我正在使用MySQL 5.7与节点JS 6.11.0,并试图更新一个UNIQUE MySQL列,每当我插入一个有冲突的行。 但是,当我尝试插入有冲突的logging时,只有现有的logging更新为NULL ,不会发生insert 。 这是我的代码 pool.getConnection(function(err, connection) { var newClass = req.body; var query = `INSERT INTO classes SET ? ON DUPLICATE KEY UPDATE teacher_id = NULL`; connection.query(query, newClass, function(err, result) { console.log(result); if(result.affectedRows >= 1) { res.status(201).end(); res.json(result); } }); connection.release(); });` 我必须运行查询两次要插入的行; 第一次冲突的列被设置为空,那么当我再次运行相同的查询时,行被插入,因为没有冲突。 我已经采取了生成的SQL,并直接从MySql控制台运行它,我仍然需要运行查询两次插入新行。 我不明白为什么这样做。 sql语句是 INSERT INTO classes SET […]

使用node.js和node-mysql执行MySQL查询

我主要来自PHP / MySQL背景,并且深入到node.js中,为我自己的testing和学习如何做事创build一个博客系统。 我在这里的问题是,我似乎无法弄清楚如何做一个正确的查询。 我已经检查了node-mysql的文档,但一直没有find关于做查询的事情。 如果我做var posts = rows[0]; 我得到了表的数组,它看起来不错,但我试图将特定字段传递给variables,但是当我执行下面的代码时,我得到一堆“未指定”的。 我知道这里有什么问题,我通常会在PHP中做一个mysql_fetch_array ,但是我不知道在node.js和node-mysql中这样做的方法。 connection.query('SELECT * FROM posts ORDER BY date', function(err, rows, fields) { if (err) throw (err); var post_date = rows[1]; var post_author = rows[2]; var post_content = rows[3]; console.log('Date: ', post_date); console.log('Author: ', post_author); console.log('Content: ', post_content); });

nodejs npm mysql返回单行句柄

我使用node和npm mysql来做一些数据库工作。 有没有办法避免使用result[0] ,如果我知道我只会收到一个单一的行? connection.query({ sql: "SELECT spend FROM `account` WHERE `name` = ? order by date desc limit 1", values: [market.name] }, function (error, results, fields) { market.fee = results[0].age; resolve(market); });

用nodejs和node-mysql返回行

我正在发现Nodejs和node-mysql模块。 我有一个小问题。 我find的每一个教程都解释了如何在数据库上进行select,但是他们从不返回行,他们总是logging下来,这对我的情况来说绝对是无用的。 我有一个app.js文件: // Get continents app.get("/continents", function(request, result) { console.log("Continents : " + database.findAllContinents()); }); 和一个mysql.js文件: exports.findAllContinents = function(connection) { var connection = getConnection(); connection.query('select id, code, name from Continent', function (err, rows, fields) { if (err) { console.log("Error in findAllContinents : " + err) } return JSON.stringify(rows); }); closeConnection(connection); }; 我怎样才能使该函数返回行在app.js文件中使用它们? 我真的不想在app.js文件中创build连接我想DAO层分离。 […]

Node.js和mysqlcallback:查询callback中的查询

所有我想要做的是插入一些数据,如果我的数据库没有,所以我把插入SQL到我的Select SQL的callback函数,但我得到这样的错误: {[错误:调用退出后无法排队查询]代码:'PROTOCOL_ENQUEUE_AFTER_QUIT',致命:false} 我的代码片段在这里: db.query('SELECT count(*) as Resultcount FROM tablename WHERE email = ? and password = ?', [post.email, post.password], function(error, result){ if (result[0].Resultcount == 0){ var query2 = db.query('INSERT INTO tablename SET ?', [post], function(err, result) { if(err){ console.log(err); } console.log(result); }); } else{ console.log('have data already'); } }); 有人能给我一些build议吗? 谢谢 —- —-更新 实际上,select […]

错误:Node.js MYSQL模块中握手不活动超时

我正在使用node-mysql和大部分查询。 加工。 一些查询不起作用。 我尝试了每个版本的节点(从0.5 …)直到(5.6.0),我也试过(4.0)和(4.1),没有什么帮助。 我试图改变,并没有工作。 我试图改变sequence文件: this._idleTimeout = -1; 并没有帮助。 我读了这些问题和GitHub,没有任何帮助。 我可以尝试自己解决,但我需要更多的信息。 超时在哪里,为什么? 什么时候? 这种types的信息是什么? 超时是从哪里来的? MYSQL_ERROR { [Error: Handshake inactivity timeout] code: 'PROTOCOL_SEQUENCE_TIMEOUT', fatal: true, timeout: 10000 } 我会奖励100-150分,奖励最好的答案,我可以做(需要等待2天)。 但即使你以前回答,你也会得到奖品。

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

我正在构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没有同义词,应该保持不变。 […]

如何使node.js和mysql一起工作?

在此先感谢您的帮助! 我正在做一个节点/快递的应用程序,我想用一个MySQL数据库。 但我似乎无法连接到数据库。 我知道我应该使用node-mysql模块( https://github.com/felixge/node-mysql ),但我一定是做错了。 我对此完全陌生。 我必须创build一个数据库,然后创build一个表? 有没有办法在其他地方创build一个数据库,所以每次重新启动应用程序都不会被擦除? 这是我的代码。 有人可以回答上面的问题,并告诉我我下面做错了什么? 谢谢! var express = require('express'), routes = require('./routes'), user = require('./routes/user'), http = require('http'), io = require('socket.io'), path = require('path'); var app = express(); var server = http.createServer(app); sio = io.listen(server); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); […]