Tag: node mysql

如何使用mysql连接和node.js池中的单身devise模式

我正在使用node-mysql作为orm。 ( https://github.com/mysqljs/mysql ) 我正在使用MySQL和Node.JS创build一个REST API。 之前我使用MongoDB做了同样的事情。 它工作正常。 github.com/chanakaDe/Mint-REST。 现在我想用MySQL来做同样的事情。 我做了大部分的工作,并有一个小问题。 有很多类,我需要集中使用mysql连接。 作为单身devise模式。 这是我的新回购。 https://github.com/chanakaDe/MintRestSQL 。 而且我会显示我想要使用这些模式的位置。 在这里我有数据库文件。 我创build了一个新的连接池。 github.com/chanakaDe/MintRestSQL/blob/master/app/util/database.js。 现在我想在我的控制器类中使用这个连接/池。 因为我无法在每个控制器类中创build连接。 没有? 这是我现在的两个控制器。 github.com/chanakaDe/MintRestSQL/blob/master/app/routes/report.js github.com/chanakaDe/MintRestSQL/blob/master/app/routes/api.js 请给我一个更好的方法来做到这一点。 我是node-mysql的新手。 但是在Node.JS环境中使用MySQL甚至在生产级系统中也是一个很好的方法。 所以我想用这些标准来制作一个好的API。 有没有什么办法使用单例模式或类似的东西,集中连接,并在所有的控制器中使用它? 它将花费一些时间来检查我的文件和理解代码。 但请检查并给我一个解决scheme。 我试了很多东西,但没有工作:( 欢迎您提出回购并进行更新

Appfog与node.js如何访问与JavaScript到MySQL数据库?

我有一个node.js应用程序发布在appfog中,但是当我尝试通过javascript( https://github.com/felixge/node-mysql )访问mysql数据库时,“node-mysql”似乎没有安装,有什么办法做到这一点? appfog网站上没有任何文档。 谢谢。 服务器app.js的代码: if(process.env.VCAP_SERVICES){ var env = JSON.parse(process.env.VCAP_SERVICES); var cre = env['mysql-5.1'][0]['credentials']; } var Client = require('mysql').Client, client = new Client(); client.user = cre.user; client.password = cre.password; client.host=cre.host; client.port=cre.port; client.database=cre.name; client.connect(); client.query( 'SELECT * FROM scores ', function selectPlayers(err, results, fields) { if (err) { console.log("Error: " + err.message); throw err; } […]

如何在nodejs中自动closuresmysql连接

目前我的进程挂起,因为mysql池没有被自动closures。 我假定当我调用connection.release() ,如果没有其他人使用连接,连接就会closures。 但似乎并非如此。 我的代码如下所示: getConnection.js: var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 10, host : 'localhost', user : 'root', password : 'mysql', database : 'xxx' }); module.exports = function getConnection(callback){ pool.getConnection(function(err, connection){ if (err) { throw err; } callback(connection); }); } 我正在使用它: var getConn = require('./getConnection'); function selectOne(query, map, cb){ getConn(function(conn){ […]

如何使用nodejs和pem keyfile连接到云端SQL实例

我正尝试使用pem文件密钥连接到来自nodejs应用程序的Cloud SQL实例。 var fs = require('fs'); var Sequelize = require('sequelize'); var sequelize = new Sequelize('database', 'root', '', { host: '<ip>', dialect: 'mysql', ssl: { ca: fs.readFileSync(__dirname + '/server-ca.pem'), key: fs.readFileSync(__dirname + '/cert.pem') } }); sequelize.query('select * from Users').then(function (users) { console.log(users); }); 我得到了Possibly unhandled SequelizeAccessDeniedError: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'<ip>' (using password: NO) 。 […]

应用程序不会终止于MySQL池

我正在编写一个nodejs应用程序,并希望使用连接池。 但是,下面的应用程序不会终止 – 虽然我希望它在connection.end()调用后终止。 应用程序工作得很好,如果我使用一个连接,而不是池。 我需要以某种方式终止游泳池吗? 使用的库 : https : //github.com/felixge/node-mysql Ubuntu上的node.js版本 :0.10.4 var mysql = require('mysql'); var pool = mysql.createPool({ host : 'example.org', user : 'myuser', password : 'youbet', database : 'notrevealingdetails', insecureAuth: true }); function getCampaignData(callback) { pool.getConnection(function(err, connection) { if(err) throw err; connection.query( 'SELECT cam.id, cam.name AS campaign_name, cam.subdomain, usr.email, usr.display_name AS […]

用node-mysql,NodeJS和Q更新多行

我正在使用node-mysql,node-js和Q promise。 我已经成功更新,删除,并插入单行使用上述。 以及在我的testing用例场景中在单个语句中插入多行。 但是,我需要在单个查询或for循环中更新具有不同值(批处理模式)的多行。 关于如何在mysql2中使用预准备语句(应该在node-mysql上进行改进)的信息非常稀less,没有示例,尽pipe这应该是自然的select,同时还要承诺弥补node-jsasynchronous性。 另外,我在各种testing场景中成功地使用了defered.makeNodeResolver()。 我正在尝试更新多个行在一个单一的查询与where子句和改变条件。 当我更新单行时它正在工作。 但是,当我尝试用单个查询更新多行时,logging不会更新。 我准备切换到使用for循环来执行多个更新,然后汇总结果并将其从服务器发送回客户端,这将是我的第二个首选选项。 如果没有太多的performance,我不明白为什么不这样做。 但是我还没有find这样做的例子。 var values = [ { users: "tom", id: 101 }, { users: "george", id: 102 } ]; // var params = [values.users, values.id ]; var sql = 'UPDATE tabletest SET users = ? WHERE id = ?;'; connection.query(sql, [{users: values[0].users}, {id: values[0].id […]

运行node-mysql教程时出错

我在node-mysql的教程部分运行代码,它给我错误 码 var MySQLPool = require("mysql-pool").MySQLPool; var pool = new MySQLPool({ poolSize: 4, user: 'root', password: 'root', database: 'test' }); pool.query("SELECT 'Hello, World!' AS hello", function(err, rows, fields) { if(err) throw err; console.log(rows[0].hello); }); for(var i = 0; i < 10; ++i) { pool.query("SELECT SLEEP(2), ? AS i", [i], function(err, rows, fields) { if(err) throw […]

Node-Mysql抛出连接超时

我的node.js应用程序给予5xx由于连接超时随机时间。 以下是我如何连接和查询: var mysql = require('mysql'); var config = { host: '172.10.1.1', port: 3306, user: 'user', password: 'pwd', database: 'mydb', connectionLimit: 15, queueLimit: 30 } var poolCluster = mysql.createPool(config); var queryDB = function(query, cb) { poolCluster.getConnection(function(err, connection) { if(err) { cb(err, null); } else { connection.query(query, function (err, rows) { connection.release(); cb(err, rows); }); } […]

通过Node.js,Express和mysql模块进行筛选

我正在尝试通过将node.js和mysql模块https://npmjs.org/package/mysql的快速框架集成起来。 我有一个简单的应用程序设置(通过使用快速命令行),我也有一个模块声明与一些数据库属性的工作。 我的DB模块是这样设置的: app.js node_modules |___db | node_modules |___mysql 将mysql模块设置为db模块的依赖关系。 在我的DB模块的index.js中,我有一些模块导出设置可以被应用程序访问: /* * Connection params for database */ var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'user', password: 'password', database: 'database', }); var connect = connection.connect(function(err){ if(!err){ console.log("You are connected to the database."); } else{ throw err; } }); var end = […]

插入多个值时,节点mysql上的'ER_PARSE_ERROR'

我试图在节点中使用node-mysql将多个值放入数据库。 我的源代码 engine.files.forEach(function(file) { torrentpath = file.path.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/\\/g, "/"); torrentFiles.push([ result.insertId, torrentpath, file.length ]); }); console.log(torrentFiles); app.mysql.query('INSERT INTO `files` (`torrentid`, `filename`, `filesize`) VALUES ?', torrentFiles, function(err, result) { if (err) throw err; }); 我得到的错误是 [ [ 11, 'ubuntu-14.04-desktop-amd64.iso', 1010827264 ] ] Error: ER_PARSE_ERROR: You have an error in your SQL syntax; […]