{"id":395,"date":"2010-11-12T21:43:27","date_gmt":"2010-11-12T21:43:27","guid":{"rendered":"http:\/\/realnorth.net\/blog\/?p=395"},"modified":"2010-11-12T21:43:27","modified_gmt":"2010-11-12T21:43:27","slug":"mysql-nodejs","status":"publish","type":"post","link":"https:\/\/realnorth.net\/blog\/mysql-nodejs\/","title":{"rendered":"Accediendo a MySQL con node.js"},"content":{"rendered":"<p>Es muy extra\u00f1o ver una aplicaci\u00f3n <a href=\"http:\/\/nodejs.org\" target=\"_blank\">node.js<\/a> que no haga uso de una soluci\u00f3n NoSQL, pero puede presentarse el caso de tener que acceder a una base de datos legacy y casi con seguridad esa DB sea MySQL, el estado de los modulos MySQL en <a href=\"http:\/\/nodejs.org\" target=\"_blank\">node.js<\/a>, es muy dispar, pero hay un proyecto liderado por <a href=\"https:\/\/github.com\/felixge\" target=\"_blank\">Felix Geisend\u00f6rfer<\/a> al que vengo siguiendo desde hace un tiempo, es al que mas fe le tenia, mas que nada, porque cuenta con el patrocinio de <a href=\"http:\/\/www.joyent.com\" target=\"_blank\">Joyent<\/a> que ha tomado a <a href=\"http:\/\/nodejs.org\" target=\"_blank\">node.js<\/a> como algo <a href=\"http:\/\/groups.google.com\/group\/nodejs\/browse_thread\/thread\/956a3431b1d9e937\" target=\"_blank\">estrat\u00e9gico<\/a> para su plan de negocios.<\/p>\n<p>El modulo que estoy usando es <a href=\"https:\/\/github.com\/felixge\/node-mysql\" target=\"_blank\">node-mysql<\/a>, el cual es una implementaci\u00f3n del protocolo MySQL escrito 100% con <a href=\"http:\/\/nodejs.org\" target=\"_blank\">node.js<\/a>, la forma mas f\u00e1cil de instalarlo es usando <a href=\"https:\/\/github.com\/isaacs\/npm\" target=\"_blank\">npm<\/a>.<\/p>\n<pre>\n# Instalando node-mysql y sus dependencias v\u00eda npm\nnpm install mysql\n<\/pre>\n<p>El modulo aunque ya esta siendo usando por algunos en producci\u00f3n y las funcionas b\u00e1sicas ya est\u00e1n implementadas, no esta etiquetado como estable, as\u00ed que hay que tener un poco de cuidado si se quiere hacer uso de el.<\/p>\n<p>Pasemos al ejemplo, como se ve en el c\u00f3digo a continuaci\u00f3n, la primera parte se encarga de cargar el modulo y todo lo relacionado a la conexi\u00f3n a la DB, luego paso la consulta que quiero ejecutar haciendo uso de client.query y para terminar creo una funci\u00f3n que se encargara de mostrar los resultado en la consola o tirar un mensaje de error si algo no va bien. <\/p>\n<pre>\nvar Client = require('mysql').Client,\n    client = new Client();  \n\tclient.user = 'root';\n\tclient.password = 'password';\n\tclient.host='127.0.01';\n\tclient.port='3306';\n\tclient.database='Oranje'\n\tclient.connect();\n\n\tclient.query(\n\t\t'SELECT * FROM players WHERE name LIKE &quot;Minke%&quot;',\n        function selectPlayers(err, results, fields) {\n            if (err) {\n                console.log(&quot;Error: &quot; + err.message);\n                throw err;\n            }\n            console.log(&quot;Number of rows: &quot;+results.length);\n            console.log(results);\n            client.end();\n        });\n<\/pre>\n<p>En la siguiente screenshot pueden ver la salida de datos en la consola.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/realnorth.net\/blog\/wp-content\/uploads\/2010\/11\/paulo@kendra-Projects-node-mysql_0021.png\" alt=\"Accediendo a MySQL con node.js\" title=\"Accediendo a MySQL con node.js\"\/><\/p>\n<p>En <a href=\"https:\/\/github.com\/felixge\/node-mysql\" target=\"_blank\">github<\/a> pueden encontrar mas informaci\u00f3n acerca del proyecto, ademas de la documentaci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es muy extra\u00f1o ver una aplicaci\u00f3n node.js que no haga uso de una soluci\u00f3n NoSQL, pero puede presentarse el caso de tener que acceder a una base de datos legacy y casi con seguridad esa DB sea MySQL, el estado de los modulos MySQL en node.js, es muy dispar, pero hay un proyecto liderado por [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[29,33],"class_list":["post-395","post","type-post","status-publish","format-standard","hentry","category-development","tag-mysql","tag-node-js"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/posts\/395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/comments?post=395"}],"version-history":[{"count":0,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/posts\/395\/revisions"}],"wp:attachment":[{"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/media?parent=395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/categories?post=395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/tags?post=395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}