Cơ sở dữ liệu nào là tốt nhất với nodejs?

Nút. js là thời gian chạy JavaScript hướng sự kiện không đồng bộ và hiệu quả nhất khi xây dựng các ứng dụng mạng có thể mở rộng. Nút. js không có khóa, vì vậy không có cơ hội khóa chết bất kỳ quy trình nào. và cung cấp các sản phẩm phần mềm sử dụng nó

Trong nút sau. js, tôi sẽ chỉ cho bạn cách thiết lập một Node. js với cơ sở dữ liệu PostgreSQL và hướng dẫn bạn những kiến ​​thức cơ bản về cách sử dụng nó

Xem tất cả các chương của loạt bài hướng dẫn Node Hero

  1. Bắt đầu với Nút. js
  2. Sử dụng NPM
  3. Hiểu lập trình không đồng bộ
  4. Nút đầu tiên của bạn. máy chủ HTTP js
  5. Nút. hướng dẫn về cơ sở dữ liệu js [ bài viết này ]
  6. Nút. hướng dẫn mô-đun yêu cầu js
  7. Nút. hướng dẫn cấu trúc dự án js
  8. Nút. xác thực js bằng Hộ chiếu. js
  9. Nút. hướng dẫn kiểm thử đơn vị js
  10. nút gỡ lỗi. ứng dụng js
  11. Nút. Hướng dẫn bảo mật js
  12. Cách triển khai nút. ứng dụng js
  13. Nút giám sát. ứng dụng js

Các cách lưu trữ dữ liệu trong Node. ứng dụng js

Lưu trữ dữ liệu trong một biến toàn cục

Cung cấp các trang tĩnh cho người dùng – như bạn đã học trong chương trước – có thể phù hợp cho các trang đích hoặc blog cá nhân. Tuy nhiên, nếu bạn muốn cung cấp nội dung được cá nhân hóa, bạn phải lưu trữ dữ liệu ở đâu đó

Hãy lấy một ví dụ đơn giản. đăng ký người dùng. Bạn có thể cung cấp nội dung tùy chỉnh cho người dùng cá nhân hoặc cung cấp nội dung đó cho họ chỉ sau khi nhận dạng

Nếu người dùng muốn đăng ký ứng dụng của bạn, bạn có thể muốn tạo một trình xử lý tuyến đường để có thể thực hiện được

const users = []

app.post('/users', function (req, res) {
    // retrieve user posted data from the body
    const user = req.body
    users.push({
      name: user.name,
      age: user.age
    })
    res.send('successfully registered')
})

Bằng cách này, bạn có thể lưu trữ người dùng trong một biến toàn cục, biến này sẽ nằm trong bộ nhớ trong suốt thời gian tồn tại của ứng dụng của bạn

Sử dụng phương pháp này có thể có vấn đề vì một số lý do

  • RAM đắt tiền,
  • bộ nhớ đặt lại mỗi khi bạn khởi động lại ứng dụng của mình,
  • nếu bạn không dọn dẹp, đôi khi bạn sẽ bị tràn ngăn xếp

Lưu trữ dữ liệu trong một tập tin

Điều tiếp theo có thể xuất hiện trong đầu bạn là lưu trữ dữ liệu trong các tệp

Nếu chúng tôi lưu trữ vĩnh viễn cơ sở dữ liệu người dùng của mình trên hệ thống tệp, chúng tôi có thể tránh được các sự cố được liệt kê trước đó

Phương pháp này trông giống như sau trong thực tế

const fs = require('fs')

app.post('/users', function (req, res) {
    const user = req.body
    fs.appendFile('users.txt', JSON.stringify({ name: user.name, age: user.age }), (err) => {
        res.send('successfully registered')
    })
})

Bằng cách này, chúng tôi sẽ không mất dữ liệu người dùng, ngay cả sau khi đặt lại máy chủ. Giải pháp này cũng tiết kiệm chi phí, vì mua bộ nhớ rẻ hơn so với mua RAM

Thật không may, việc lưu trữ dữ liệu người dùng theo cách này vẫn còn một vài sai sót

  • Nối thêm thì được, nhưng hãy nghĩ đến việc cập nhật hoặc xóa
  • Nếu chúng tôi đang làm việc với các tệp, không có cách nào dễ dàng để truy cập chúng song song (khóa toàn hệ thống sẽ ngăn bạn viết)
  • Khi chúng tôi cố gắng mở rộng quy mô ứng dụng của mình, chúng tôi không thể chia nhỏ các tệp (bạn có thể, nhưng nó vượt quá mức của hướng dẫn này) giữa các máy chủ

Đây là nơi cơ sở dữ liệu thực phát huy tác dụng

Bạn có thể đã nghe nói rằng có hai loại cơ sở dữ liệu chính. SQL và NoSQL

Lưu trữ dữ liệu trong cơ sở dữ liệu SQL

Hãy bắt đầu với SQL. Nó là ngôn ngữ truy vấn được thiết kế để hoạt động với cơ sở dữ liệu quan hệ. Cơ sở dữ liệu SQL có một số hương vị tùy thuộc vào sản phẩm bạn đang sử dụng, nhưng các nguyên tắc cơ bản đều giống nhau ở mỗi sản phẩm

Bản thân dữ liệu sẽ được lưu trữ trong bảng và mỗi phần được chèn sẽ được biểu thị dưới dạng một hàng trong bảng, giống như trong Google Trang tính hoặc Microsoft Excel

Trong cơ sở dữ liệu SQL, bạn có thể xác định các lược đồ – các lược đồ này sẽ cung cấp khung cho dữ liệu bạn sẽ đưa vào đó. Các loại giá trị khác nhau phải được đặt trước khi bạn có thể lưu trữ dữ liệu của mình. Ví dụ: bạn sẽ phải xác định một bảng cho dữ liệu người dùng của mình và phải thông báo cho cơ sở dữ liệu rằng nó có tên người dùng là một chuỗi và tuổi là một loại số nguyên

Ưu điểm của cơ sở dữ liệu SQL

SQL cho phép giao tiếp với cơ sở dữ liệu và nhận câu trả lời cho các câu hỏi phức tạp trong vài giây.
SQL xem dữ liệu mà không lưu trữ dữ liệu trong đối tượng. Nó tuân theo một tiêu chuẩn lâu đời, rõ ràng.

Lưu trữ dữ liệu trong cơ sở dữ liệu NoSQL

Cơ sở dữ liệu NoSQL đã trở nên khá phổ biến trong thập kỷ qua. Với NoSQL, bạn không cần phải xác định lược đồ và bạn có thể lưu trữ bất kỳ JSON tùy ý nào. Điều này rất tiện lợi với JavaScript vì chúng ta có thể biến bất kỳ đối tượng nào thành JSON khá dễ dàng. Hãy cẩn thận, vì bạn không bao giờ có thể đảm bảo rằng dữ liệu nhất quán và bạn không bao giờ có thể biết những gì có trong cơ sở dữ liệu

Ưu điểm của cơ sở dữ liệu NoSQL

  • NoSQL có thể xử lý khối lượng lớn dữ liệu có cấu trúc, bán cấu trúc và phi cấu trúc
  • Tương tác nhanh chóng
  • Linh hoạt và hướng đối tượng
  • Có kiến ​​trúc mở rộng, hiệu quả

Nút. js và MongoDB

Có một sự hiểu lầm phổ biến với Node. js những gì chúng ta nghe mọi lúc

"Nút. js chỉ có thể được sử dụng với MongoDB (là cơ sở dữ liệu NoSQL phổ biến nhất). ”

Theo kinh nghiệm của tôi, điều này không đúng. Hầu hết các cơ sở dữ liệu đều có trình điều khiển và chúng cũng có thư viện trên NPM. Theo tôi, chúng đơn giản và dễ sử dụng như MongoDB

Nút. js và PostgreSQL

Để đơn giản, chúng ta sẽ sử dụng SQL trong ví dụ sau. Phương ngữ lựa chọn của tôi là PostgreSQL trong Nút của chúng tôi. ứng dụng js

Thiết lập cơ sở dữ liệu PostgreSQL của bạn

Để khởi động và chạy PostgreSQL, bạn phải cài đặt nó trên máy tính của mình. Nếu bạn đang dùng Mac, bạn có thể sử dụng homebrew để cài đặt PostgreSQL. Mặt khác, nếu bạn đang dùng Linux, bạn có thể cài đặt nó bằng trình quản lý gói mà bạn chọn

Cơ sở dữ liệu nào là tốt nhất với nodejs?

Để biết thêm thông tin, hãy đọc hướng dẫn tuyệt vời này về cách thiết lập và chạy cơ sở dữ liệu PostgreSQL đầu tiên của bạn

Nếu bạn định sử dụng một công cụ trình duyệt cơ sở dữ liệu, thì tôi khuyên bạn nên dùng chương trình dòng lệnh có tên psql – chương trình này đi kèm với cài đặt máy chủ PostgreSQL. Đây là bảng mẹo nhỏ sẽ hữu ích nếu bạn bắt đầu sử dụng

Nếu không thích giao diện dòng lệnh, bạn có thể sử dụng pgAdmin là một công cụ GUI mã nguồn mở để quản trị PostgreSQL

Lưu ý rằng SQL là một ngôn ngữ riêng, chúng tôi sẽ không đề cập đến tất cả các tính năng của nó, chỉ những tính năng đơn giản hơn. Để tìm hiểu thêm, có rất nhiều khóa học trực tuyến tuyệt vời bao gồm tất cả kiến ​​thức cơ bản về PostgreSQL

Nút. Tương tác cơ sở dữ liệu js

Trước tiên, chúng ta phải tạo cơ sở dữ liệu PostgreSQL mà chúng ta sẽ sử dụng trong Nút của mình. ứng dụng js. Để làm như vậy, hãy nhập lệnh sau trong thiết bị đầu cuối. createdb node_hero

Sau đó, chúng tôi phải tạo bảng cho người dùng của mình

CREATE TABLE users(
  name VARCHAR(20),
  age SMALLINT
);

Cuối cùng, chúng ta có thể quay lại viết mã. Đây là cách bạn có thể tương tác với cơ sở dữ liệu của mình thông qua Nút của bạn. chương trình js

'use strict'

const pg = require('pg')
const conString = 'postgres://username:password@localhost/node_hero' // make sure to match your own database's credentials

pg.connect(conString, function (err, client, done) {
  if (err) {
    return console.error('error fetching client from pool', err)
  }
  client.query('SELECT $1::varchar AS my_first_query', ['node hero'], function (err, result) {
    done()

    if (err) {
      return console.error('error happened during query', err)
    }
    console.log(result.rows[0])
    process.exit(0)
  })
})

Đây chỉ là một ví dụ đơn giản, một 'hello world' trong PostgreSQL. Lưu ý rằng tham số đầu tiên là một chuỗi là lệnh SQL của chúng ta, tham số thứ hai là một mảng các giá trị mà chúng ta muốn tham số hóa truy vấn của mình bằng

Đó là một lỗi bảo mật lớn khi chèn đầu vào của người dùng vào cơ sở dữ liệu khi họ đến. Điều này bảo vệ bạn khỏi các cuộc tấn công SQL Injection, đây là một kiểu tấn công khi kẻ tấn công cố gắng khai thác các truy vấn SQL được làm sạch nghiêm ngặt. Luôn cân nhắc điều này khi xây dựng bất kỳ ứng dụng nào dành cho người dùng. Để tìm hiểu thêm, hãy xem Node của chúng tôi. js Danh sách kiểm tra bảo mật ứng dụng

Hãy tiếp tục với ví dụ trước của chúng tôi

app.post('/users', function (req, res, next) {
  const user = req.body

  pg.connect(conString, function (err, client, done) {
    if (err) {
      // pass the error to the express error handler
      return next(err)
    }
    client.query('INSERT INTO users (name, age) VALUES ($1, $2);', [user.name, user.age], function (err, result) {
      done() //this done callback signals the pg driver that the connection can be closed or returned to the connection pool

      if (err) {
        // pass the error to the express error handler
        return next(err)
      }

      res.send(200)
    })
  })
})

Mở khóa thành tựu. người dùng được lưu trữ trong cơ sở dữ liệu. 🙂 Bây giờ hãy thử truy xuất chúng. Tiếp theo, hãy thêm một điểm cuối mới vào ứng dụng của chúng tôi để truy xuất người dùng

app.get('/users', function (req, res, next) {
  pg.connect(conString, function (err, client, done) {
    if (err) {
      // pass the error to the express error handler
      return next(err)
    }
    client.query('SELECT name, age FROM users;', [], function (err, result) {
      done()

      if (err) {
        // pass the error to the express error handler
        return next(err)
      }

      res.json(result.rows)
    })
  })
})

Bạn vừa tạo một cơ sở dữ liệu PostgreSQL đang hoạt động trong Node. js

Điều đó không khó lắm phải không?

Bây giờ bạn có thể chạy bất kỳ truy vấn SQL phức tạp nào mà bạn có thể đưa ra trong Nút của mình. ứng dụng js

Với kỹ thuật bạn đã học trong nút này. js, bạn có thể lưu trữ dữ liệu liên tục trong ứng dụng của mình và nhờ vào nhóm làm việc chăm chỉ của mô-đun nút-postgres, việc này thật dễ dàng

Chúng tôi đã trải qua tất cả những điều cơ bản mà bạn phải biết về cách sử dụng cơ sở dữ liệu với Node. js. Bây giờ hãy đi và tự mình tạo ra thứ gì đó

Hãy thử mọi thứ và trải nghiệm, bởi vì đó là cách tốt nhất để trở thành một Node Hero thực sự. Luyện tập và chuẩn bị cho Node tiếp theo. js hướng dẫn về cách giao tiếp với API của bên thứ ba

Cơ sở dữ liệu nào là tốt nhất với nút js?

“Nút. js chỉ có thể được sử dụng với MongoDB (là cơ sở dữ liệu NoSQL phổ biến nhất). ”

Tôi có nên sử dụng MySQL hoặc MongoDB với nút js không?

MySQL là lựa chọn tuyệt vời nếu bạn có dữ liệu có cấu trúc và cần một cơ sở dữ liệu quan hệ truyền thống . MongoDB rất phù hợp để phân tích thời gian thực, quản lý nội dung, Internet vạn vật, di động và các loại ứng dụng khác.

MySQL có tốt cho Nodejs không?

js được kết hợp với MongoDB và các cơ sở dữ liệu NoSQL khác, nhưng Node. js cũng hoạt động tốt với các cơ sở dữ liệu quan hệ như MySQL . Nếu bạn muốn viết một microservice mới với Node. js cho cơ sở dữ liệu hiện có, rất có thể bạn sẽ sử dụng MySQL, một trong những cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới.

Node JS có tốt cho cơ sở dữ liệu quan hệ không?

Nút. js hỗ trợ tất cả các loại cơ sở dữ liệu, bao gồm cả cơ sở dữ liệu quan hệ và NoSQL . Tuy nhiên, Nút. js cơ sở dữ liệu NoSQL phù hợp nhất cho hầu hết các ứng dụng và trường hợp sử dụng toàn công ty.