Node.js-da MySQL-ni qo'llab-quvvatlash: node-mysql-libmysqlclient Node.JS Men ushbu e'lonni bir muncha vaqtdan beri qoldiraman, ammo endi vaqti keldi. Kutib oling: node-mysql-libmysqlclient v0.0.7, Node.js uchun MySQL ulagichi, ma'lumotlar bazasi so'rovlarining sinxron va asinxron bajarilishini qo'llab-quvvatlaydigan va PHP / Perl / Ruby va shunga o'xshash ulagichlarning API-siga yaqin bo'lgan API.
MySQL va Node.js: Aloqa tarixi Node.JS asosan tez asenkron serverlarni yozish ([1] ga qarang), xabarlar navbatiga xizmat ko'rsatish, oz miqdordagi statik va oz miqdordagi ma'lumotlar bilan ishlaydigan boshqa vazifalarni bajarish uchun ishlab chiqilgan. Shuning uchun birinchi bo'lib NoSQL va Memcached ma'lumotlar bazalariga ulagichlar paydo bo'ldi. Node.JSni ishlab chiqishning ushbu bosqichida, bu tizimdan foydalanish mumkin bo'lgan ko'p qismlarni qamrab olganday tuyuldi. Agar siz aloqador ma'lumotlar bazalari bilan ishlashingiz kerak bo'lsa, demone Node.js serveri uchun ma'lumotlarni tayyorlagan boshqa tilda yozilgan.
Ma'lumki, bu Node.js-ning rivojlanishini sekinlashtirdi, chunki ko'pchilik umumiy server dasturlash tillarining standart kutubxonalarida relyatsion ma'lumotlar bazalarini qo'llab-quvvatlash uchun ishlatiladi. Bu Node.js ishlab chiqaruvchisi tomonidan rad etilmadi, u bunday ulagichlarni keyinchalik barqaror versiyalardan biriga qo'shishni rejalashtirgan. Biroq, hozirgi kunga qadar bu sodir bo'lmadi va aloqador ma'lumotlar bazalariga uchinchi tomon ulagichlari paydo bo'la boshladi. "Node-mysql-libmysqlclient" yozuvini yozish paytida ulardan bir nechtasi mavjud edi: tugun-mysql node.dbslayer.js node_postgres
Node.js uchun yana bir MySQL ulagichi? Menimcha, ularning barchasi kamchiliklariga ega edi. Shubhasiz, ulagichni tugun-mysql-da bo'lgani kabi to'g'ridan-to'g'ri Javascript-ga yozish qulay. Ammo, bu juda katta miqdordagi kod, bu Node.js API o'zgarganda sinchkovlik bilan tekshirilishi va sinchkovlik bilan yangilanishi kerak. Bundan tashqari, C / C ++ tilida bajarilishi JavaScript-ga nisbatan 3-5 baravar tezroq ekanligi ma'lum bo'ldi. Node.dbslayer.js-dan foydalanish uchun so'rovlarning asenkron bajarilishini ta'minlash uchun DBsLayer shaklida qatlamdan foydalanish kerak. Node_postgres birinchi dasturlarida juda oz funktsional edi. Va bu ulagichlarning hech biri utilitar funktsiyalar mavjudligi sababli boshqa tillardagi o'xshashlariga yaqinlashmagan. Bu mening node-mysql-libmysqlclient yozishni boshlaganimning asosiy sababi edi.
Node-mysql-libmysqlclient: xususiyatlari Bog'lanishlar hozirgi vaqtda kommunal funktsiyalar, so'rovlarni bajarish va ma'lumotlarni olish bilan bog'liq bo'lgan barcha libmysqlclient API funktsiyalari uchun bajarilmoqda. Ulagich, shuningdek, so'rovlarni asenkron ravishda, qo'ng'iroqni qaytarish bilan yoki amalga oshirmasdan bajarishga imkon beradi.
Misol:
/* http://gist.github.com/537870 */
var mysql_libmysqlclient = require("mysql-libmysqlclient"); var conn = mysql_libmysqlclient.createConnection(host, user, password, database);
if (!conn.connected()) { sys.puts("Connection error: " + conn.connectErrno() + ", " + conn.connectError()); process.exit(1);
}
var string = conn.escape("Sannis's code");
/* Sync queries */
var res = conn.query("CREATE TEMPORARY TABLE t1 (alpha INTEGER, beta VARCHAR(255), pi FLOAT);");
sys.puts("'CREATE TABLE' result: " + sys.inspect(res)); res = conn.query("INSERT INTO t1 VALUES (1, 'hello', 3.141);"); sys.puts("LastInsertId: " + sys.inspect(conn.lastInsertId()));
/* Async queries */
conn.queryAsync("INSERT INTO t1 VALUES (2, 'world', 2.718);", function (res) { conn.queryAsync("SELECT * FROM t1;", function (res) { sys.puts("NumRows: " + res.numRows()); var rows = res.fetchAll(); sys.puts("Rows: " + sys.inspect(rows)); conn.queryAsync("DELETE * FROM t1;"); }); });
Do'stlaringiz bilan baham: |