MySQL Node.js के साथ


375

मैं अभी Node.js. में आने लगा हूँ मैं एक PHP बैकग्राउंड से आता हूं, इसलिए मैं अपने सभी डेटाबेस की जरूरतों के लिए MySQL का उपयोग करने के लिए काफी अभ्यस्त हूं।

मैं MySQL को Node.js के साथ कैसे उपयोग कर सकता हूं?


5
आपने आखिर क्या किया? नीचे कुछ अच्छी जानकारी है, मुझे सुनने में दिलचस्पी होगी कि आपके अनुभव क्या थे
लंडन

7
@ लिंडन, वास्तव में कुछ कारणों से नोड-मस्कल के साथ चला गया, मुख्यतः क्योंकि यह काफी सक्रिय विकास में है, और सबसे व्यापक रूप से उपयोग किया जाता है। मैं भी वास्तव में multipleStatementsसमारोह की तरह ।
रेंगते हैं

@ क्रॉफ आप क्या पसंद करते हैं, PHP या Node.js? मैं PHP / MySQL में आया हूँ, लेकिन नोड पर स्विच करने के बारे में सोच रहा हूँ क्योंकि यह वाक्यविन्यास को देखते हुए बहुत अधिक स्वाभाविक लगेगा कि JS वाक्यविन्यास है
Oldboy

1
@ एंथनी व्यक्तिगत पसंद मुझे लगता है, यह उस पारिस्थितिक तंत्र पर निर्भर करता है जिसमें आप विकसित हो रहे हैं, यदि आप एक टीम में हैं, आदि। यह मूल पोस्ट प्राचीन है, और नोड परिदृश्य में बहुत कुछ बदल गया है, जहां इसके सामने कहीं अधिक सामान्य है और बैक एंड काम। मैं कहूंगा कि यदि आपके पास नोड को एक बार देने का समय है, और इसके महान को वास्तविक समय के वेब सॉकेट के लिए सॉकेट.आईओ जैसी चीजों के साथ जोड़ा गया है।
रेंगना

जवाबों:


426

की जाँच करें Node.js मॉड्यूल सूची

  • नोड- mysql - MySQL प्रोटोकॉल को लागू करने के लिए एक नोड .js मॉड्यूल
  • नोड- mysql2 - फिर भी एक और शुद्ध जेएस async ड्राइवर। पाइप लाइनिंग, तैयार बयान।
  • नोड- mysql-libmysqlclient - libmysllientient पर आधारित MySQL अतुल्यकालिक बाइंडिंग

नोड- mysql काफी सरल दिखता है:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret',
});

connection.connect(function(err) {
  // connected! (unless `err` is set)
});

क्वेरी:

var post  = {id: 1, title: 'Hello MySQL'};
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {
  // Neat!
});
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'

81
नोड- mysql के लिए +1 वास्तव में उन्हें इस्तेमाल नहीं करने की तुलना में तैयार किए गए बयानों का उपयोग करना आसान बना रहा है
केविन लाएटी

2
लेन-देन के लिए github.com/bminer/node-mysql-queues और नोड-म्यांकल के साथ उपयोग के लिए कई स्टेटमेंट सपोर्ट।
बीएमएनआर

2
नोड- mysql के लिए भी +1। सिर्फ requireएक जावास्क्रिप्ट लाइब्रेरी से बेहतर क्या हो सकता है
एलेक्स के

4
@ केविनलायटी I इस धारणा के तहत था कि नोड-मस्कल ने अभी तक तैयार किए गए बयानों को लागू नहीं किया है। वाक्य-विन्यास बस समान दिखता है । इसके बजाय, ऐसा प्रतीत होता है कि, अब के लिए, विशेष वर्ण बच रहे हैं।
फनसीकी

4
इसके अलावा आप अपने डेटाबेस का नाम कनेक्शन ऑब्जेक्ट में 'डेटाबेस' जोड़कर प्राप्त कर सकते हैं
felipekm

28

नोड- mysql संभवतः MySQL डेटाबेस के साथ काम करने के लिए उपयोग किए जाने वाले सबसे अच्छे मॉड्यूल में से एक है जिसे सक्रिय रूप से बनाए रखा जाता है और अच्छी तरह से प्रलेखित किया जाता है।


19

चूँकि यह केवल एक अद्यतन जोड़ने का एक पुराना धागा है:

MySQL node.js ड्राइवर को स्थापित करने के लिए:

यदि आप बस चलाते हैं npm install mysql, तो आपको उसी निर्देशिका में रहना होगा जो आपका सर्वर चलाए। मैं निम्नलिखित उदाहरणों में से एक में इसे करने की सलाह दूंगा:

वैश्विक स्थापना के लिए:

npm install -g mysql

स्थानीय स्थापना के लिए:

1- package.jsonनिर्भरता में इसे अपने लिए जोड़ें :

"dependencies": {
    "mysql": "~2.3.2",
     ...

2- दौड़ npm install


ध्यान दें कि होने वाले कनेक्शनों के लिए आपको mysql सर्वर चलाना होगा (जो नोड स्वतंत्र है)

MySQL सर्वर स्थापित करने के लिए:

वहाँ ट्यूटोरियल का एक समूह है जो इसे समझाते हैं, और यह ऑपरेटिव सिस्टम पर थोड़ा निर्भर है। बस Google पर जाएं और खोजें how to install mysql server [Ubuntu|MacOSX|Windows]। लेकिन एक वाक्य में: आपको http://www.mysql.com/downloads/ पर जाना है और इसे इंस्टॉल करना है।


2
npm install --save mysqlइसे अपने package.jsonआप स्थापित कर देगा
Xeoncross

10

यहां उत्पादन कोड है जो आपकी मदद कर सकता है।

Package.json

{
  "name": "node-mysql",
  "version": "0.0.1",
  "dependencies": {
    "express": "^4.10.6",
    "mysql": "^2.5.4"
  }
}

यहाँ सर्वर फ़ाइल है।

var express   =    require("express");
var mysql     =    require('mysql');
var app       =    express();

var pool      =    mysql.createPool({
    connectionLimit : 100, //important
    host     : 'localhost',
    user     : 'root',
    password : '',
    database : 'address_book',
    debug    :  false
});

function handle_database(req,res) {

    pool.getConnection(function(err,connection){
        if (err) {
          connection.release();
          res.json({"code" : 100, "status" : "Error in connection database"});
          return;
        }   

        console.log('connected as id ' + connection.threadId);

        connection.query("select * from user",function(err,rows){
            connection.release();
            if(!err) {
                res.json(rows);
            }           
        });

        connection.on('error', function(err) {      
              res.json({"code" : 100, "status" : "Error in connection database"});
              return;     
        });
  });
}

app.get("/",function(req,res){-
        handle_database(req,res);
});

app.listen(3000);

संदर्भ: https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/


इस कोड को खराब कर दिया गया है .. जिसमें कई त्रुटियां हैंCannot read property 'release' of undefined
Pacerier

3

KnexJs को Node.JS और ब्राउज़र दोनों में SQL क्वेरी बिल्डर के रूप में उपयोग किया जा सकता है। मुझे इसका उपयोग करना आसान लगता है। इसे आज़माएं - Knex.js

$ npm install knex --save
# Then add one of the following (adding a --save) flag:
$ npm install pg
$ npm install sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install mariasql
$ npm install strong-oracle
$ npm install oracle
$ npm install mssql


var knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  }
});

आप इसे इस तरह से उपयोग कर सकते हैं

knex.select('*').from('users')

या

knex('users').where({
  first_name: 'Test',
  last_name:  'User'
}).select('id')

3

Imo, आपको MySQL कनेक्टर / Node.js की कोशिश करनी चाहिए जो MySQL के लिए आधिकारिक Node.js ड्राइवर है। विस्तृत विवरण के लिए Ref-1 और Ref-2 देखें । मैंने mysqljs / mysql की कोशिश की है जो यहाँ उपलब्ध है , लेकिन मुझे इस लाइब्रेरी की कक्षाओं, विधियों, गुणों के बारे में विस्तृत दस्तावेज़ नहीं मिले हैं।

इसलिए मैंने मानक के MySQL Connector/Node.jsसाथ स्विच किया X DevAPI, क्योंकि यह एक एसिंक्रोनस प्रॉमिस-आधारित क्लाइंट लाइब्रेरी है और अच्छा प्रलेखन प्रदान करता है। निम्नलिखित कोड स्निपेट पर एक नज़र डालें:

const mysqlx = require('@mysql/xdevapi');
const rows = [];

mysqlx.getSession('mysqlx://localhost:33060')
.then(session => {
    const table = session.getSchema('testSchema').getTable('testTable');

    // The criteria is defined through the expression.
    return table.update().where('name = "bar"').set('age', 50)
        .execute()
        .then(() => {
            return table.select().orderBy('name ASC')
                .execute(row => rows.push(row));
        });
})
.then(() => {
    console.log(rows);
});

1

आप एक नया प्रयास भी कर सकते हैं जिसे Node.js DB के रूप में जाना जाता है जिसका उद्देश्य कई डेटाबेस इंजनों के लिए एक सामान्य ढांचा प्रदान करना है। यह C ++ के साथ बनाया गया है, इसलिए प्रदर्शन की गारंटी है।

विशेष रूप से आप इसके db-mysql ड्राइवर का उपयोग Node.js MySQL समर्थन के लिए कर सकते हैं ।


1
धन्यवाद! मैं देता हूँ कि एक जाना भी।
रेंगना

4
नोड-डीबी अब समर्थित नहीं है (8 महीने के लिए निष्क्रिय, पदावनत नोड-वाफ़ का उपयोग करता है) और स्थापना मेरे लिए विफल रही।
योगू

18
"यह C ++ के साथ बनाया गया है, इसलिए प्रदर्शन की गारंटी है" - बस C ++ का उपयोग प्रदर्शन की गारंटी नहीं देता है, फिर भी इसे सही ढंग से प्रोग्राम करना होगा।
developerbmw

न केवल नोड-डीबी असमर्थित है, लिंक मृत-ईश है - अभी किसी तरह की विज्ञापन साइट पर पुनर्निर्देशित किया गया है। Downvoting।
नर्सडॉलाव


0

लाइब्रेरी स्थापित करके mysql डेटाबेस कनेक्ट करें। यहाँ, उठाया और नोड- mysql मॉड्यूल का उपयोग करने के लिए आसान है।

npm install mysql@2.0.0-alpha2

var http = require('http'),
   mysql = require('mysql');

var sqlInfo = {
   host: 'localhost',
   user: 'root',
   password: 'urpass',
   database: 'dbname'
}
client = mysql.createConnection(sqlInfo);

client.connect();

NodeJS के लिए mysql जोड़ने और क्वेरी उदाहरण


2
जहाँ तक मुझे पता है कि अल्फा रिलीज़ को कभी भी 'स्थिर' नहीं माना जाता है। यदि मैं गलत हूं तो मुझे सही करों। अल्फा को नाटकीय रूप से बदलने की संभावना है यह अंतिम जाने से पहले एपीआई है जो उत्पादन (और यहां तक ​​कि विकास) कोड में अत्यधिक अवांछित है। यही है, अगर संस्करण क्रमांकन semver.org दिशानिर्देशों का पालन करता है।
रॉबिन वैन बालन

1
"स्मार्ट" उद्धरण ('') जेएस फाइलों में वह स्मार्ट नहीं है।
ग्लिफ़

मुझे यह टिप्पणी पसंद है क्योंकि यह दिखाता है कि डेटाबेस का नाम कहां रखा गया है
बोरिस इवानोव

0

आप ORM, बिल्डरों आदि को छोड़ सकते हैं और अपने DB / SQL प्रबंधन का उपयोग करके sqlerऔर सरल कर सकते हैं sqler-mdb

-- create this file at: db/mdb/setup/create.database.sql
CREATE DATABASE IF NOT EXISTS sqlermysql
const conf = {
  "univ": {
    "db": {
      "mdb": {
        "host": "localhost",
        "username":"admin",
        "password": "mysqlpassword"
      }
    }
  },
  "db": {
    "dialects": {
      "mdb": "sqler-mdb"
    },
    "connections": [
      {
        "id": "mdb",
        "name": "mdb",
        "dir": "db/mdb",
        "service": "MySQL",
        "dialect": "mdb",
        "pool": {},
        "driverOptions": {
          "connection": {
            "multipleStatements": true
          }
        }
      }
    ]
  }
};

// create/initialize manager
const manager = new Manager(conf);
await manager.init();

// .sql file path is path to db function
const result = await manager.db.mdb.setup.create.database();

console.log('Result:', result);

// after we're done using the manager we should close it
process.on('SIGINT', async function sigintDB() {
  await manager.close();
  console.log('Manager has been closed');
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.