THAM GIA MySQL nodejs
Như đã đề cập ngắn gọn trong hướng dẫn liên kết, Tải háo hức là hành động truy vấn dữ liệu của một số mô hình cùng một lúc (một mô hình 'chính' và một hoặc nhiều mô hình được liên kết). Ở cấp độ SQL, đây là truy vấn có một hoặc nhiều phép nối Show
Khi điều này được thực hiện, các mô hình được liên kết sẽ được Sequelize thêm vào (các) trường được tạo tự động, được đặt tên thích hợp trong các đối tượng được trả về Trong Sequelize, tải háo hức chủ yếu được thực hiện bằng cách sử dụng tùy chọn 5 trên truy vấn công cụ tìm mô hình (chẳng hạn như 6, 7, v.v.)Ví dụ cơ bảnGiả sử thiết lập sau
Đang tìm nạp một phần tử được liên kếtVÂNG. Vì vậy, trước hết, hãy tải tất cả các tác vụ với người dùng được liên kết của chúng
đầu ra
Ở đây, 8 là 9. Điều này cho thấy rằng khi Sequelize tìm nạp các mô hình được liên kết, chúng sẽ được thêm vào đối tượng đầu ra dưới dạng các phiên bản mô hìnhỞ trên, mô hình được liên kết đã được thêm vào một trường mới có tên là 0 trong tác vụ đã tìm nạp. Tên của trường này được Sequelize chọn tự động dựa trên tên của mô hình được liên kết, trong đó dạng số nhiều của nó được sử dụng khi áp dụng (i. e. , khi hiệp hội là 1 hoặc 2). Nói cách khác, kể từ 3, một tác vụ được liên kết với một người dùng, do đó, lựa chọn hợp lý là dạng số ít (mà Sequelize tự động theo sau)Đang tìm nạp tất cả các phần tử liên quanBây giờ, thay vì tải người dùng được liên kết với một tác vụ nhất định, chúng tôi sẽ làm ngược lại - chúng tôi sẽ tìm thấy tất cả các tác vụ được liên kết với một người dùng nhất định Cuộc gọi phương thức về cơ bản là giống nhau. Điểm khác biệt duy nhất là bây giờ, trường bổ sung được tạo trong kết quả truy vấn sử dụng dạng số nhiều (trong trường hợp này là ____8_______4) và giá trị của nó là một mảng các thể hiện tác vụ (thay vì một thể hiện đơn lẻ như trên)
đầu ra ________số 8_______ Lưu ý rằng trình truy cập (thuộc tính 4 trong ví dụ kết quả) là số nhiều vì liên kết là một-nhiềuTìm nạp một liên kết Bí danhNếu một liên kết được đặt bí danh (sử dụng tùy chọn 6), bạn phải chỉ định bí danh này khi bao gồm mô hình. Thay vì chuyển mô hình trực tiếp đến tùy chọn 5, thay vào đó, bạn nên cung cấp cho đối tượng hai tùy chọn. 8 và 6Lưu ý cách những người dùng 0 được đặt bí danh là 1 ở trên. Để có được quyền đó, bạn phải chỉ định mô hình bạn muốn tải, cũng như bí danh
đầu ra
Bạn cũng có thể bao gồm tên bí danh bằng cách chỉ định một chuỗi khớp với bí danh liên kết
Yêu cầu háo hức tảiKhi tải háo hức, chúng tôi có thể buộc truy vấn chỉ trả lại các bản ghi có mô hình được liên kết, chuyển đổi truy vấn một cách hiệu quả từ 2 mặc định thành 3. Điều này được thực hiện với tùy chọn 4, như sau
Tùy chọn này cũng hoạt động trên bao gồm lồng nhau Tải háo hức được lọc ở cấp mô hình được liên kếtKhi tải háo hức, chúng tôi cũng có thể lọc mô hình được liên kết bằng cách sử dụng tùy chọn 5, như trong ví dụ sau
SQL đã tạo 0Lưu ý rằng truy vấn SQL được tạo ở trên sẽ chỉ tìm nạp những người dùng có ít nhất một công cụ phù hợp với điều kiện (không phải là 6, trong trường hợp này). Đây là trường hợp bởi vì, khi tùy chọn 5 được sử dụng bên trong một 5, Sequelize sẽ tự động đặt tùy chọn 9 thành 9. Điều này có nghĩa là, thay vì một 2, một 3 được thực hiện, chỉ trả về các mô hình gốc có ít nhất một mẫu con phù hợpCũng lưu ý rằng tùy chọn 5 được sử dụng đã được chuyển đổi thành điều kiện cho mệnh đề 4 của 3. Để có được mệnh đề 6 cấp cao nhất, thay vì mệnh đề 4, phải thực hiện một số việc khác. Điều này sẽ được hiển thị tiếp theoTham chiếu đến các cột khácNếu bạn muốn áp dụng mệnh đề 6 trong một mô hình được bao gồm đề cập đến một giá trị từ một mô hình được liên kết, bạn chỉ cần sử dụng hàm 9, như thể hiện trong ví dụ bên dưới 1Các mệnh đề phức tạp ở cấp cao nhấtĐể có được các mệnh đề 6 cấp cao nhất liên quan đến các cột lồng nhau, Sequelize cung cấp một cách để tham chiếu các cột lồng nhau. cú pháp 1Ví dụ, nó có thể được sử dụng để di chuyển điều kiện where từ một mô hình được bao gồm từ điều kiện 4 sang mệnh đề 6 cấp cao nhất 2SQL đã tạo 3Cú pháp 4 cũng hoạt động đối với các cột được lồng sâu ở nhiều cấp độ, chẳng hạn như 5. Do đó, bạn có thể sử dụng điều này để tạo các bộ lọc phức tạp trên các cột được lồng sâuĐể hiểu rõ hơn về tất cả sự khác biệt giữa tùy chọn bên trong 5 (được sử dụng bên trong một 5), có và không có tùy chọn 9, và một 5 cấp cao nhất sử dụng cú pháp 4, dưới đây chúng tôi có bốn ví dụ cho bạn 4SQL được tạo, theo thứ tự 5Tìm nạp bằng User.findAll({ include: { model: Task, required: true }});1 (chỉ dành cho MySQL, MariaDB, PostgreSQL và MSSQL)Theo mặc định, các liên kết được tải bằng cách sử dụng 2 - nghĩa là nó chỉ bao gồm các bản ghi từ bảng cha. Bạn có thể thay đổi hành vi này thành 1 bằng cách chuyển tùy chọn 4, nếu phương ngữ bạn đang sử dụng hỗ trợ điều đóHiện tại, SQLite không hỗ trợ nối phải Ghi chú. 4 chỉ được tôn trọng nếu 9 là sai 6Tải nhiều háo hứcTùy chọn 5 có thể nhận một mảng để tìm nạp nhiều mô hình được liên kết cùng một lúc 7Háo hức tải với mối quan hệ Nhiều-NhiềuKhi bạn thực hiện tải háo hức trên một mô hình có mối quan hệ Thuộc về nhiều, theo mặc định, Sequelize cũng sẽ tìm nạp dữ liệu của bảng liên kết. Ví dụ 8đầu ra 9Lưu ý rằng mọi phiên bản thanh háo hức được tải vào thuộc tính 8 đều có một thuộc tính bổ sung được gọi là 9, đây là phiên bản Sequelize có liên quan của mô hình đường giao nhau. Theo mặc định, Sequelize tìm nạp tất cả các thuộc tính từ bảng liên kết để xây dựng thuộc tính bổ sung nàyTuy nhiên, bạn có thể chỉ định thuộc tính nào bạn muốn tìm nạp. Điều này được thực hiện với tùy chọn 0 được áp dụng bên trong tùy chọn 1 của phần bao gồm. Ví dụ 0Nếu bạn không muốn bất kỳ thứ gì từ bảng nối, bạn có thể cung cấp rõ ràng một mảng trống cho tùy chọn 0 bên trong tùy chọn 1 của tùy chọn 5 và trong trường hợp này sẽ không có gì được tìm nạp và thậm chí thuộc tính bổ sung sẽ không được tạo 1đầu ra 2Bất cứ khi nào bao gồm một mô hình từ mối quan hệ Nhiều-Nhiều, bạn cũng có thể áp dụng bộ lọc trên bảng nối. Điều này được thực hiện với tùy chọn 5 được áp dụng bên trong tùy chọn 1 của phần bao gồm. Ví dụ 3SQL đã tạo (sử dụng SQLite) 4bao gồm tất cả mọi thứĐể bao gồm tất cả các mô hình được liên kết, bạn có thể sử dụng các tùy chọn 7 và 8 5Bao gồm các bản ghi đã xóa mềmTrong trường hợp bạn muốn háo hức tải các bản ghi đã xóa mềm, bạn có thể làm điều đó bằng cách đặt 9 thành 00 6Đặt hàng các hiệp hội được tải háo hứcKhi bạn muốn áp dụng mệnh đề 01 cho các mô hình được tải háo hức, bạn phải sử dụng tùy chọn cấp cao nhất 02 với các mảng tăng cường, bắt đầu với đặc điểm kỹ thuật của mô hình lồng nhau mà bạn muốn sắp xếpĐiều này được hiểu rõ hơn với các ví dụ 7Trong trường hợp có mối quan hệ nhiều-nhiều, bạn cũng có thể sắp xếp theo thuộc tính trong bảng thông qua. Ví dụ: giả sử chúng ta có mối quan hệ Nhiều-nhiều giữa 03 và 04 có mô hình đường giao nhau là 05, bạn có thể thực hiện 8Trong tất cả các ví dụ trên, bạn đã nhận thấy rằng tùy chọn 02 được sử dụng ở cấp cao nhất. Tình huống duy nhất mà 02 cũng hoạt động bên trong tùy chọn bao gồm là khi sử dụng 08. Trong trường hợp đó, cách sử dụng như sau 9Đặt hàng phức tạp liên quan đến truy vấn phụHãy xem hướng dẫn về truy vấn phụ để biết ví dụ về cách sử dụng truy vấn phụ để hỗ trợ sắp xếp phức tạp hơn Tải háo hức lồng nhauBạn có thể sử dụng tải háo hức lồng nhau để tải tất cả các mô hình liên quan của một mô hình liên quan 0đầu ra 1Điều này sẽ tạo ra một kết nối bên ngoài. Tuy nhiên, một mệnh đề 5 trên một mô hình có liên quan sẽ tạo một liên kết bên trong và chỉ trả về các phiên bản có các mô hình con phù hợp. Để trả về tất cả các phiên bản gốc, bạn nên thêm 10 2Truy vấn trên sẽ trả về tất cả người dùng và tất cả công cụ của họ, trừ những giáo viên được liên kết với 11Sử dụng const tasks = await Task.findAll({ include: User });console.log(JSON.stringify(tasks, null, 2));12 với bao gồmHỗ trợ chức năng tiện ích 12 bao gồm. Chỉ bao gồm những gì được đánh dấu là 9 mới được xem xét trong 15. Ví dụ: nếu bạn muốn tìm và đếm tất cả người dùng có hồ sơ 3Vì phần bao gồm cho 16 đã đặt ____20_______9 nên sẽ dẫn đến kết nối bên trong và chỉ những người dùng có hồ sơ mới được tính. Nếu chúng tôi loại bỏ 9 khỏi danh sách bao gồm, thì cả người dùng có và không có hồ sơ đều sẽ được tính. Việc thêm mệnh đề 5 vào phần bao gồm sẽ tự động khiến nó trở thành bắt buộc 4Truy vấn ở trên sẽ chỉ tính những người dùng có hồ sơ đang hoạt động, bởi vì 9 được đặt hoàn toàn thành true khi bạn thêm mệnh đề where vào phần bao gồm
Nodejs có thể kết nối với MySQL không?Khi bạn đã thiết lập và chạy MySQL trên máy tính của mình, bạn có thể truy cập nó bằng cách sử dụng Nút. js . Để truy cập cơ sở dữ liệu MySQL bằng Node. js, bạn cần có trình điều khiển MySQL.
Làm cách nào để THAM GIA các bảng trong nodejs?Tham gia hai hoặc nhiều bàn
. by using a JOIN statement.
Tôi có thể sử dụng THAM GIA trong MySQL không?Bảng tham gia MySQL
. Lưu ý rằng cột "CustomerID" trong bảng "Orders" đề cập đến "CustomerID" trong bảng "Customers". Mối quan hệ giữa 2 bảng trên là cột "CustomerID". A JOIN clause is used to combine rows from two or more tables, based on a related column between them. Notice that the "CustomerID" column in the "Orders" table refers to the "CustomerID" in the "Customers" table. The relationship between the two tables above is the "CustomerID" column.
Làm cách nào để thêm THAM GIA MySQL?Để nối các bảng, bạn sử dụng mệnh đề nối chéo, nối trong, nối trái hoặc nối phải. Mệnh đề nối được sử dụng trong câu lệnh SELECT xuất hiện sau mệnh đề TỪ. Lưu ý rằng MySQL chưa hỗ trợ FULL OUTER JOIN. . tham gia bên trong Chỗ nối bên trái tham gia ngay tham gia chéo |