নোড.জেএস সহ মাইএসকিউএল


375

আমি সবেমাত্র নোড.জেএস-তে প্রবেশ শুরু করেছি। আমি একটি পিএইচপি ব্যাকগ্রাউন্ড থেকে এসেছি, তাই আমি আমার সমস্ত ডাটাবেস প্রয়োজনীয়তার জন্য মাইএসকিউএল ব্যবহার করতে মোটামুটি অভ্যস্ত।

আমি কীভাবে নোড.জেএস এর সাথে মাইএসকিউএল ব্যবহার করতে পারি?


5
আপনি কি দিয়ে শেষ করেছেন? নীচে কিছু ভাল তথ্য আছে, আমি আপনার অভিজ্ঞতাগুলি কী তা জানতে আগ্রহী হব
ল্যান্ডন

7
@ লন্ডন আসলে কয়েকটি কারণে নোড-মাইএসকিএল নিয়ে গিয়েছিল, মূলত কারণ এটি মোটামুটি সক্রিয় বিকাশে রয়েছে এবং সম্ভবত এটি বহুল ব্যবহৃত হয়। আমি সত্যিই multipleStatementsফাংশন পছন্দ করি ।
0:34 এ ক্র্যাফ করুন

@ ক্র্যাফ আপনি কি পছন্দ করেন, পিএইচপি বা নোড.জেএস? আমি পিএইচপি / মাইএসকিউএল এ উঠলাম, তবে নোডে স্যুইচ করার কথা ভাবছি যেহেতু এটি সিনট্যাক্সটি বিবেচনা করে আরও অনেক প্রাকৃতিক অনুভূত হবে জেএস সিনট্যাক্স
ওল্ডবয়

1
@ অ্যান্টনি ব্যক্তিগত অগ্রাধিকার আমি মনে করি, এটি আপনি যে ইকোসিস্টেমের উপর বিকাশ করছেন তার উপর নির্ভর করে আপনি যদি কোনও দলে থাকেন etc. ইত্যাদি। এই আসল পোস্টটি প্রাচীন, এবং নোড ল্যান্ডস্কেপটিতে অনেক কিছু পরিবর্তিত হয়েছে যেখানে এর সামনে আরও সাধারণ জায়গা এবং ফিরে কাজ। আমি বলব যদি আপনার কাছে নোডকে যাওয়ার সময় হয় এবং এটির আসল সময়ের ওয়েব সকেটের জন্য সকেট.ইওর মতো জিনিসগুলির দুর্দান্ত জুটি তৈরি করা হয়।
ক্রুফ

উত্তর:


426

পরীক্ষা করে দেখুন Node.js মডিউল তালিকা

নোড-মাইএসকিএল যথেষ্ট সহজ দেখাচ্ছে:

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
নোড-মাইএসকিএল জন্য +1 আসলে ব্যবহারের চেয়ে প্রস্তুত বিবৃতিগুলি ব্যবহার করা সহজ করে তোলে
কেভিন লইটি

2
github.com/bminer/node-mysql-queues লেনদেনের জন্য এবং নোড- মাইএসকিএল ব্যবহারের জন্য একাধিক বিবৃতি সমর্থন।
বিমিনিয়ার

2
নোড-মাইএসকিএল এর জন্যও +1। requireজাভাস্ক্রিপ্ট লাইব্রেরিটি খালি করার চেয়ে ভাল আর কী হতে পারে
অ্যালেক্স কে

4
@ কেভিনলাইটি আমি এই ধারণার মধ্যে ছিলাম যে নোড-মাইএসকিএল এখনও বিবৃতি প্রয়োগ করে না । বাক্য গঠনটি ঠিক একইরকম দেখাচ্ছে । পরিবর্তে, দেখা যাচ্ছে যে, আপাতত বিশেষ অক্ষরগুলি পালানো হচ্ছে।
ফানসিকি 21

4
এছাড়াও আপনি আপনার ডাটাবেসের নাম সংযোগের সাথে 'ডাটাবেস' যুক্ত করতে পারেন
ফেলিপেকম

28

নোড-মাইএসকিএল সম্ভবত মাইএসকিউএল ডাটাবেস যা সক্রিয়ভাবে রক্ষণাবেক্ষণ এবং ভালভাবে নথিভুক্ত করা হয়েছে তার সাথে কাজ করার জন্য ব্যবহৃত সেরা মডিউলগুলির মধ্যে একটি।


19

যেহেতু এটি একটি পুরানো থ্রেড কেবল একটি আপডেট যুক্ত করছে:

মাইএসকিউএল নোড.জেএস ড্রাইভার ইনস্টল করতে:

আপনি যদি ঠিক চালান তবে আপনাকে npm install mysqlএকই ডিরেক্টরিতে থাকা দরকার যা আপনার সার্ভার চালায়। আমি নীচের উদাহরণগুলির মধ্যে একটি হিসাবে এটি করার পরামর্শ দেব:

বৈশ্বিক ইনস্টলেশন জন্য:

npm install -g mysql

স্থানীয় ইনস্টলেশন জন্য:

1- এটি আপনার package.jsonনির্ভরতাগুলিতে যুক্ত করুন:

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

2- রান npm install


নোট করুন যে সংযোগগুলি ঘটতে গেলে আপনাকে মাইএসকিএল সার্ভারও চালনা করতে হবে (যা নোড ইন্ডিপেন্ডেন্ট)

মাইএসকিউএল সার্ভার ইনস্টল করতে:

এখানে বেশ কয়েকটি টিউটোরিয়াল রয়েছে যা এটি ব্যাখ্যা করে এবং এটি অপারেটিভ সিস্টেমের উপর কিছুটা নির্ভরশীল। শুধু গুগলে যান এবং অনুসন্ধান করুন 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
প্যাসিরিয়ার

3

নেক্স.জেএস উভয়ই নোড.জেএস এবং ব্রাউজারে এসকিউএল কোয়েরি নির্মাতা হিসাবে ব্যবহার করা যেতে পারে। আমি এটি ব্যবহার করা সহজ বলে মনে করি। এটি চেষ্টা করে দেখুন - 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

তবে, আপনার মাইএসকিউএল সংযোগকারী / নোড.জেএস ব্যবহার করা উচিত যা মাইএসকিউএল এর সরকারী নোড.জেএস ড্রাইভার। দেখুন সুত্র -1 এবং রেফ-2 বিস্তারিত ব্যাখ্যা জন্য। আমি মাইএসকিএলজেএস / মাইএসকিএল চেষ্টা করেছি যা এখানে পাওয়া যায় , তবে আমি এই লাইব্রেরির ক্লাস, পদ্ধতি, বৈশিষ্ট্যগুলির বিষয়ে বিস্তারিত ডকুমেন্টেশন পাই না।

তাই আমি মান স্যুইচ 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

আপনি নোড.জেএস ডিবি নামে পরিচিত একটি নতুন প্রচেষ্টাও চেষ্টা করতে পারেন যা লক্ষ্য করে যে বেশ কয়েকটি ডাটাবেস ইঞ্জিনের জন্য একটি সাধারণ কাঠামো সরবরাহ করা। এটি সি ++ দিয়ে নির্মিত তাই পারফরম্যান্সের নিশ্চয়তা রয়েছে।

বিশেষত আপনি নোড.জেএস মাইএসকিউএল সমর্থনের জন্য এর ডিবি-মাইএসকিএল ড্রাইভারটি ব্যবহার করতে পারেন ।


1
ধন্যবাদ! আমিও যেতে পারি।
ক্রোফ

4
নোড-ডিবি আর সমর্থিত নয় (8 মাস নিষ্ক্রিয়, নোড-ওয়ফ ব্যবহার করে) এবং ইনস্টলেশনটি আমার জন্য ব্যর্থ হয়েছিল।
যোগু

18
"এটি সি ++ দিয়ে তৈরি তাই পারফরম্যান্সের গ্যারান্টিযুক্ত" - কেবল সি ++ ব্যবহার করা পারফরম্যান্সের গ্যারান্টি দেয় না, এটি এখনও সঠিকভাবে প্রোগ্রাম করতে হবে।
developerbmw

কেবল নোড-ডিবি অসমর্থিত নয়, লিঙ্কটি মারা গেছে - ঠিক এখন কোনও ধরণের বিজ্ঞাপন সাইটে পুনঃনির্দেশিত। Downvoting।
নুরডগ্লা

2
@ মারিয়ানো, লিংক ডাউন
পেসারিয়ার

0

একটি লাইব্রেরি ইনস্টল করে mysql ডাটাবেস সংযোগ করুন। এখানে, নোড-মাইএসকিএল মডিউলটি স্থিতিশীল এবং সহজেই ব্যবহারযোগ্য picked

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();

নোডজেএস মাইএসকিএল সংযোগ এবং অনুসন্ধানের উদাহরণ হিসাবে


2
আমি যতদূর জানি আলফা প্রকাশগুলি কখনই 'স্থিতিশীল' হিসাবে বিবেচিত হবে না। আমি ভুল হলে শুধরে. ফাইনায় যাওয়ার আগে আলফার এপিআই নাটকীয়ভাবে পরিবর্তন করার সম্ভাবনা রয়েছে যা উত্পাদন (এবং এমনকি বিকাশ) কোডে অত্যন্ত অবাঞ্ছিত। এটি হল, যদি সংস্করণ নম্বরটি semver.org নির্দেশিকা অনুসরণ করে।
রবিন ভ্যান বালেন

1
"স্মার্ট" উদ্ধৃতি ('') জেএস ফাইলগুলিতে সেই স্মার্ট না হয়ে দেখা দেয়।
গ্লিফ

আমার এই মন্তব্যটি পছন্দ হয়েছে কারণ এটি দেখায় যেখানে ডাটাবেসের নাম রাখা উচিত
বোরিস ইভানোভ

0

আপনি ওআরএম, বিল্ডার ইত্যাদিকে এড়িয়ে যেতে পারেন এবং এবং আপনার ডিবি / এসকিউএল পরিচালনকে সহজ করে 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');
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.