Chèn mảng đối tượng vào nút mysql js

Đang sử dụng nút-mysql để thêm bản ghi vào cơ sở dữ liệu nhưng đang gặp khó khăn khi bản ghi được chèn là một mảng đối tượng và tôi cần thao tác là một giao dịch. Tôi đã đơn giản hóa vấn đề của mình bằng cách tạo một dự án thử nghiệm để giải thích rõ hơn vấn đề của mình

Giả sử tôi có các bảng usersorders và dữ liệu được chèn vào trông như thế này

var user = {
   name: "Dennis Wanyonyi",
   email: "[email protected]"
};

var orders = [{
   order_date: new Date(),
   price: 14.99
}, {
   order_date: new Date(),
   price: 39.99
}];

Trước tiên, tôi muốn chèn một user vào cơ sở dữ liệu và sử dụng insertId để thêm từng orders cho người dùng đó. Đang sử dụng một giao dịch vì trong trường hợp xảy ra lỗi, tôi muốn khôi phục toàn bộ quá trình. Đây là cách tôi cố gắng chèn tất cả các bản ghi bằng các giao dịch nút-mysql

connection.beginTransaction(function(err) {
  if (err) { throw err; }
  connection.query('INSERT INTO users SET ?', user, function(err, result) {
    if (err) {
      return connection.rollback(function() {
        throw err;
      });
    }


    for (var i = 0; i < orders.length; i++) {

      orders[i].user_id = result.insertId;

        connection.query('INSERT INTO orders SET ?', orders[i], function(err, result2) {
          if (err) {
            return connection.rollback(function() {
              throw err;
            });
          }  
          connection.commit(function(err) {
            if (err) {
              return connection.rollback(function() {
                throw err;
              });
            }
            console.log('success!');
          });
        });
       }
      });
     });

Tuy nhiên, tôi gặp sự cố khi lặp lại mảng orders mà không phải gọi connection.commit nhiều lần trong vòng lặp for

Tôi khuyên bạn nên tạo một chuỗi đơn giản cho truy vấn chèn nhiều hàng cho bảng đơn đặt hàng trong vòng lặp for trước rồi thực hiện nó bên ngoài vòng lặp for. Sử dụng vòng lặp for để chỉ tạo chuỗi. Vì vậy, bạn có thể khôi phục truy vấn bất cứ khi nào bạn muốn hoặc gặp lỗi. Bằng nhiều chuỗi truy vấn chèn, ý tôi là như sau

Để Chèn Bản ghi vào bảng cơ sở dữ liệu MySQL, có thể sử dụng truy vấn SQL. SQL là viết tắt của Structured Query Language và có thể được sử dụng để thực hiện các hoạt động khác nhau trên cơ sở dữ liệu MySQL

Truy vấn dưới đây được sử dụng để chèn một bản ghi vào bảng

INSERT INTO tableName ( column1, column2, …, columnN) VALUES ( value1, value2, …, valueN );

Ở đâu,

  • tableName là tên của bảng mà bạn muốn chèn bản ghi vào,
  • cột1, cột2, …, cột là tên của các trường khác nhau trong bảng,
  • value1, value2, …, valueN đã chỉ định các bản ghi thực tế của cột tương ứng

Ghi chú. Nếu bảng có các cột đã được tạo thì có thể tránh trường cột

INSERT INTO tableName VALUES ( value1, value2, …, valueN );

Chèn bản ghi vào bảng cơ sở dữ liệu MySQL bằng NodeJS

Bản ghi có thể được chèn trực tiếp vào bảng bằng đối tượng kết nối MySQL. Trong quá trình kết nối NodeJS và MySQL, đối tượng kết nối này được tạo. Đối tượng kết nối này có một phương thức query() có thể lấy truy vấn SQL làm đối số để thực thi nó

Chèn một bản ghi bằng NodeJS

Chúng ta có thể chạy truy vấn chèn bản ghi bằng phương thức query() bằng cách chuyển truy vấn dưới dạng đối số. Phương thức này cũng lấy hàm gọi lại làm đối số, trong đó trước tiên chúng ta kiểm tra lỗi và sau đó in thuộc tính “afferedRows” của đối tượng trả về để xem có bao nhiêu bản ghi được xen kẽ

con.query("INSERT INTO tableName ( column1, column2, …, columnN) VALUES ( value1, value2, …, valueN )", function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
});

trong đó con là đối tượng kết nối

Chèn nhiều bản ghi bằng NodeJS

Để chèn nhiều bản ghi, chúng ta phải chuyển các bản ghi của các hàng thành các mảng riêng biệt sau đó kết hợp chúng trong một mảng khác rồi chuyển mảng cuối cùng làm đối số thứ hai cho phương thức query(). Cần phải xóa các giá trị khỏi truy vấn thực tế và thay vào đó sử dụng dấu chấm hỏi (?)

const values = [
        [ value1, value2, ...., valueN ]   // values of first row
        [ value1, value2, ...., valueN ]   // values of second row
        [ value1, value2, ...., valueN ]   // values of third row
        [ value1, value2, ...., valueN ]   // values of fourth row
]

con.query("INSERT INTO tableName ( column1, column2, …, columnN) VALUES ?", [values] , function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
});

trong đó con là đối tượng kết nối

Ví dụ về Chèn Bản ghi vào Bảng MySQL

Hãy xem một ví dụ để chèn các bản ghi vào bảng MySQL bằng NodeJS.  

Bước 1. Chạy máy chủ MySQL ở chế độ nền

Bạn có thể sử dụng XAMPP cực kỳ nhanh, dễ cài đặt và có thể chạy máy chủ MySQL chỉ bằng một cú nhấp chuột.   

Chèn mảng đối tượng vào nút mysql js

Bước 2. Tạo một thư mục với một tập tin “ứng dụng. js” nơi chúng tôi viết mã của mình và mở nó trong trình chỉnh sửa mã

Chèn mảng đối tượng vào nút mysql js

Bước 3. Mở terminal và gõ lệnh dưới đây để bắt đầu NPM.  

npm init -y

Chèn mảng đối tượng vào nút mysql js

Bước 4. Nhập lệnh dưới đây để cài đặt mô-đun MySQL

npm i mysql

Chèn mảng đối tượng vào nút mysql js

Bước 5. Mở “ứng dụng. js” và nhập mô-đun MySQL

________số 8_______

Bước 6. Kết nối với máy chủ MySQL bằng phương thức createConnection() và connect()

const con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "newdatabase"
});

con.connect(function (err) {
    if (err) {
        throw err;
    }
});

Chúng tôi có một bài hướng dẫn riêng về tạo kết nối MySQL bằng NodeJS nếu bạn muốn đọc nó

Chúng tôi đã chỉ định cơ sở dữ liệu là “newdatabase” mà chúng tôi đã tạo trong hướng dẫn khác NodeJS MySQL Tạo cơ sở dữ liệu

Bước 7. Tạo một bảng. Chúng tôi có một bài hướng dẫn riêng về NodeJS MySQL Create Table nếu bạn muốn đọc nó

con.query("CREATE TABLE newtable (id INT, name VARCHAR(255),email VARCHAR(255))", function (err, result) {
    if (err) throw err;
});

Bước 8. Tạo một mảng gồm nhiều mảng chứa các giá trị cho nhiều hàng, sau đó bên trong phương thức query() chuyển truy vấn, mảng và gọi lại. Trong cuộc gọi lại, chúng tôi kiểm tra lỗi và sau đó in số lượng bản ghi được chèn

var values = [  
    ['1', 'Aditya', '[email protected]'],  
    ['1', 'Code For Geek', '[email protected]'], 
]; 

con.query("INSERT INTO newtable VALUES ?", [values], function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
});

Bước 9. Nhập lệnh dưới đây để chạy ứng dụng

INSERT INTO tableName VALUES ( value1, value2, …, valueN );
0

Mã thi đấu

INSERT INTO tableName VALUES ( value1, value2, …, valueN );
1

đầu ra

Chèn mảng đối tượng vào nút mysql js

Xác minh việc chèn bản ghi

Để xác minh rằng các bản ghi được chèn thành công, bạn có thể sử dụng truy vấn SQL bên dưới

CHỌN * TỪ tên bảng

điều này sẽ trả về một danh sách tất cả các bản ghi của một bảng

INSERT INTO tableName VALUES ( value1, value2, …, valueN );
2

đầu ra

Chèn mảng đối tượng vào nút mysql js

Tóm lược

Các bản ghi có thể được chèn vào một bảng bằng cách thực hiện truy vấn SQL để chèn các bản ghi bằng phương thức query() có thể chạy truy vấn trực tiếp trong NodeJS. Hy vọng hướng dẫn này sẽ giúp tìm hiểu quy trình chèn một hoặc nhiều bản ghi vào một bảng

Tôi có thể chèn mảng vào MySQL không?

Vì cơ sở dữ liệu không hỗ trợ kiểu dữ liệu mảng nên không có cách nào trực tiếp để lưu trữ chúng trong db. Nhưng bạn có thể chuyển mảng thành chuỗi và chèn vào mysql . Có hai cách bạn có thể làm, một là bằng cách tuần tự hóa mảng và cách còn lại là lưu nó dưới dạng chuỗi json.

Chúng ta có thể lưu trữ mảng đối tượng trong MySQL không?

Mặc dù mảng là một trong những kiểu dữ liệu phổ biến nhất trong thế giới lập trình, nhưng MySQL thực tế không hỗ trợ lưu trực tiếp kiểu mảng. You can't create a table column of array type in MySQL. The easiest way store array type data in MySQL is to use the JSON data type.

Làm cách nào để chèn dữ liệu động trong MySQL bằng nút js?

Tạo tệp js có tên "insert" trong thư mục DBexample và đặt dữ liệu sau vào đó. var mysql = yêu cầu('mysql'); . createConnection({ .
var mysql = yêu cầu('mysql');
var con = mysql. .
chủ nhà. "máy chủ cục bộ",
người sử dụng. "nguồn gốc",
mật khẩu. "12345",
cơ sở dữ liệu. "javatpoint"

Làm cách nào để chèn đối tượng vào MySQL?

Theo cú pháp, .
Trước tiên, bạn phải chỉ định tên của bảng. Sau đó, trong ngoặc đơn, bạn phải chỉ định tên cột của bảng và các cột phải được phân tách bằng dấu phẩy
Các giá trị mà bạn muốn chèn phải nằm trong dấu ngoặc đơn và phải được theo sau bởi mệnh đề GIÁ TRỊ