我需要从数据库中查询行,每行处理一些信息,然后用结果更新每一行。
这是我的示例代码,其意图是遍历每一行并更新标签:
var mysql = require('mysql');
var db = mysql.createConnection(config.database);
db.connect(function() {
db.query('SELECT id FROM testTable', function (err, rows) {
if (err) {
console.log(err);
} else {
if (rows.length) {
for (var i = 0, len = rows.length; i < len; i++) {
var row = rows[i];
console.log(row);
var label = "Label_"+row.id;
db.query('UPDATE testTable SET label = ? WHERE id = ?', [label, row.id], function(err, result) {
if (err) {
console.log(err);
} else {
console.log("Set label on row %s", row.id); …Run Code Online (Sandbox Code Playgroud) 使用该node-mysql模块,有两个连接选项 - 单个连接和连接池.设置与MySQL数据库的连接的最佳方法是什么,对所有请求使用单个全局连接,或者为每个请求创建一个连接池并从池中取一个连接池?或者有更好的方法吗?我是否只针对所有请求使用单个共享连接来解决问题?
我正在做什么::我正在尝试从数据库生成数据集的json和xml输出
Express Code ::这里我正在尝试JSON响应
var express = require('express')
, async = require('async')
, http = require('http')
, mysql = require('mysql');
var xml = require('xml');
var app = express();
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'MyDatabase'
});
connection.connect();
// all environments
app.set('port', process.env.PORT || 3007);
app.use(express.static(__dirname + '/public/images'));
app.get('/Result/',function(request,response){
var name_of_restaurants;
async.series( [
// Get the first table contents
function ( callback ) {
connection.query('SELECT * FROM mas_buf_type', function(err, rows, fields)
{
console.log('Connection result error '+err);
name_of_restaurants = …Run Code Online (Sandbox Code Playgroud) 我正在本地 OS X 计算机上运行 Node Express 网站。
我需要 ssh 到远程 mysql 数据库,以便我可以开始针对它编写查询。
现在,当我通过 OS X Yosemite 终端执行此操作时,我可以 ssh 到云中的远程服务器(运行 mysql 数据库)。
但我没有成功地尝试使用 node-mysql 和tunnel-ssh 节点中间件在代码中完成此操作。
我的代码可以运行,但在 Webstorm 中调试我的 Express 应用程序时除了 GET 之外并没有真正出错。
一些事实:
我可以使用以下命令从 OS X SSH 到 mySQL:
ssh -L 3306:127.0.0.1:3306 ourCloudServerName.net MyUserNameHere
然后我可以使用以下命令连接到 mySQL:
mysql -h localhost -p -u myUserNameHere
当我在 mysql 命令提示符下输入 SHOW GLOBAL VARIABLES LIKE 'PORT' 时,我发现服务器(或数据库,我猜这意味着......不确定)正在端口 3306 上运行
我正在通过 Webstorm 10.0.3 进行调试 这意味着我正在调试我的 Node Express 应用程序,它的启动方式如下:
变量端口= 3000;
app.set('端口', 端口);
app.listen(app.get('port'), function(){ console.log('Express Web …
我正在使用 NodeJS。我想对 1,000,000 行做一些事情而不将所有行加载到内存中。(for-each)
以前,当我使用 ASP Classic 时,我做了:
do while not rec.eof
//do something
rec.movenext
loop
Run Code Online (Sandbox Code Playgroud)
在 node-mysql 中,我没有发现任何类似于游标的东西。只要
connection.query('select * from bigdata',function(err,rows))
Run Code Online (Sandbox Code Playgroud)
问题是,我不想一次加载所有行。
我找到了答案,放在下面。我保留这个问题是为了帮助其他有同样问题的人
createConnection有什么作用?
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret'
});
Run Code Online (Sandbox Code Playgroud)
我正在使用mysql模块在nodeJS中编写应用程序.我有一些自己的模块,例如authentication,它们定义需要数据库连接.问题是:如果我有多个模块,我使用此方法创建连接,它是否每次都为我创建一个新连接或使用第一个?如果创建,它会在第一次加载我自己的模块时创建或每次创建?哦,如果它创造什么时候它会被摧毁?
这是我在我的authentication模块中的方式:
var config = require('./config.js');
var mysql = require('mysql');
var connection = mysql.createConnection(config.connectionString);
exports.login = function() ...
Run Code Online (Sandbox Code Playgroud)
我对模块和自己的模块如何工作有一些基本的了解.
谢谢你的回答.
尝试连接到我的本地主机数据库时遇到很多麻烦。我尝试使用mysql和mysql-simple节点模块,但是在两种情况下我都无法连接它。
这是我与“ mysql”模块一起使用的内容:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
port : '8000',
user : 'uber',
password : 'pass',
});
connection.connect(function(err) {
if (err) throw err;
console.log('Connection Successful');
});
connection.query('USE someDB', function(err) {
if (err) throw err;
console.log('Query Successful');
});
Run Code Online (Sandbox Code Playgroud)
这是我与“ mysql-simple”模块一起使用的内容:
var database = require('mysql-simple');
database.init('uber', 'pass', 'mysql', 'localhost', 8000);
database.querySingle('SELECT Host FROM user', function(err, results) {
if (err) {
console.log('error fetching some active users: ' + err);
return;
}
log('Query …Run Code Online (Sandbox Code Playgroud) 当我尝试使用node-mysql在MYSQL数据库上调用查询时,我遇到了解析错误.我很确定查询有效.毫无疑问,它通过phpmyadmin运行.
Message.save = function(message, callback){
db.query("INSERT INTO e_message (chatid, message, userid) VALUES(" + message.chatid + ", '" + message.message +"', " + message.userid + "); SELECT * FROM e_message WHERE chatid = " + message.chatid + " ORDER BY timestamp DESC LIMIT 0, 1;",
function(err, rows, fields){
console.log(err);
callback(err, new Message(rows[0]));
});
}
Run Code Online (Sandbox Code Playgroud)
我收到了以下错误:
{ [Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to …Run Code Online (Sandbox Code Playgroud) 我正在使用ExpressJS和MySQL开发一个Node应用程序.我正在使用这个模块https://github.com/felixge/node-mysql/,我正在学习它的用途.我对如何正确关闭连接感到麻烦.
这就是我做的:
app.post('/example', function (req, res) {
//BD
var connection = mysql.createConnection({
host: config.database.host,
port: config.database.port,
user: config.database.user,
password: config.database.password,
database: config.database.database
});
var sql = '';
if (varExample != null) {
sql = 'Random query';
connection.query(sql, function (err, results) {
//Get results
connection.end();
});
}
});
Run Code Online (Sandbox Code Playgroud)
有时我必须多次调用此方法才能在数据库中插入数据.那一刻我得到一个错误'太多连接'.
在这些情况下关闭连接的方法是什么?
我无法在node.js中导出池连接.我想要的是从db.js获取池中的连接并使用它,然后在使用它之后释放它.
db.js
var mySQL = require('mysql');
var pool = mySQL.createPool({
host: config.host,
user: config.user,
password: config.password,
database: config.database
});
var getConnection = function() {
pool.getConnection(function(err, connection) {
if(err) throw err;
return connection;
});
};
module.exports.pool = getConnection;
Run Code Online (Sandbox Code Playgroud)
query.js
var dbSql = require('./db');
var userQuery = 'select * from user';
var con = dbSql.pool();
console.log("con: " + con); //displays undefined
con.query(userQuery,function(err,user){
con.release();
})
Run Code Online (Sandbox Code Playgroud)
上面我做console.log时("con:"+ con); 它显示未定义
node-mysql ×10
node.js ×10
mysql ×4
javascript ×2
asynchronous ×1
express ×1
json ×1
node-modules ×1
ssh ×1
ubuntu ×1
xml ×1