Phương thức truy vấn javascript
Hướng dẫn SQL của chúng tôi sẽ hướng dẫn bạn cách sử dụng SQL trong. MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres và các hệ thống cơ sở dữ liệu khác Show
Ví dụ trong mỗi chươngVới trình soạn thảo SQL trực tuyến của chúng tôi, bạn có thể chỉnh sửa câu lệnh SQL và nhấp vào nút để xem kết quả Là một nhà phát triển JavaScript, bạn sẽ thường xuyên gặp trường hợp này, và thay vì tìm kiếm trên google cách chuyển đối tượng thành tham số chuỗi truy vấn, thì trong bài viết này chúng ta sẽ lướt qua những cách nhanh nhất và hiệu quả nhất. Thử nghiệm sự cốTrong bài viết này, chúng ta sẽ cùng nhau chuyển đổi định dạng có giống như thế này không? let obj = { id: 1234, search: 'query string parameters in JavaScript', token: '123412341341', } And variable objects on this format https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=123412341341 Ở hướng dẫn này thì không khó hay suy nghĩ nhiều, ở đây tôi chỉ liệt kê cho các bạn những cách nhanh nhất có thể chứ không cần suy nghĩ hay có một vấn đề cao siêu gì ở đây. 1 - Sử dụng map và join javascriptES6 var queryString = Object.keys(params).map(key => key + '=' + params[key]).join('&'); ES5 var queryString = Object.keys(params).map(function(key) { return key + '=' + params[key] }).join('&'); 2 - Sử dụng jquery javascriptBạn nào đang sử dụng jquery trên client thì có thể sử dụng chúng cho những task như thế này var queryString = $.param(params); 3 - Sử dụng trong nút javascriptNếu bạn đang sử dụng trong nút môi trường thì cũng có một cách nhanh và gọn. Đó là mô-đun chuỗi truy vấn trong nút const querystring = require('querystring'); let queryString = querystring.stringify(params); 4 - javascript mã hóaURIThành phầnvar queryString = Object.keys(params).map((key) => { return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) }).join('&'); Những mẹo này theo tôi bạn nên lưu vào một tệp Utils. Trong một vòng đời của một dev luôn có một tập tin Utils. Cho nên đây sẽ là một trong những mẹo cần ghi lại. Tôi muốn chạy một truy vấn SQL trong tệp. js. Tôi đã cố gắng thêm một số mã PHP vào nó nhưng tất nhiên là nó không hoạt động Nội dung chính Hiển thị
Tôi muốn chạy truy vấn SQL const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });4. Tôi muốn hiển thị giá trong biểu đồ. Có ai biết làm thế nào tôi có thể chạy truy vấn SQL này trong tệp. js để tôi có thể nhận được mục đánh giá từ cơ sở dữ liệu không? Tôi đang sử dụng mã JavaScript sau ________số 8Hình ảnh được sử dụng theo giấy phép từ Shutterstock. com Nếu bạn đang phát triển các web ứng dụng, bạn gần như chắc chắn rằng sẽ liên tục tương tác với cơ sở dữ liệu. Và khi đến lúc chọn cách bạn tương tác, các lựa chọn có thể quá sức Trong bài viết này, chúng tôi sẽ xem xét đánh giá chi tiết theo 5 cách khác nhau để tương tác với cơ sở dữ liệu của bạn bằng JavaScript và chúng tôi sẽ nói về những ưu và nhược điểm của từng người. Chúng tôi sẽ bắt đầu với sự lựa chọn thấp nhất-các lệnh SQL-sau đó chuyển qua các đối tượng cao cấp hơn Chọn thư viện cơ sở dữ liệu phù hợp với ứng dụng JavaScript của bạn để có thể tác động đến khả năng duy trì, khả năng mở rộng và mã hiệu suất của bạn, vì vậy, nó đáng để dành một chút thời gian để Mẫu ứng dụng của chúng tôiChúng tôi sẽ sử dụng một ứng dụng Express tầm thường được lưu trữ trên Heroku để làm ví dụ cho chúng tôi. Tất cả các mã cho bài viết này đều nằm trong kho GitHub này. Vui lòng thoải mái sao chép nó và làm theo điều kiện tiên quyếtĐể chạy ứng dụng mẫu, bạn sẽ cần phần mềm sau trên máy của bạn
Nếu bạn không có tài khoản Heroku, bạn cần phải đăng ký tài khoản miễn phí. Nếu bạn không muốn đăng ký Heroku, bạn cũng có thể chạy bộ ứng dụng cục bộ với một trường hợp nhất Postgres address. Nếu bạn cảm thấy thoải mái với điều đó, sẽ khá dễ dàng để thấy những thay đổi mà bạn cần thực hiện thay vì khai thác với Heroku Khi bạn đã cài đặt tất cả các bên trên, hãy chạy const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });5 trong một thiết bị đầu cuối và bạn đã sẵn sàng để bắt đầu Xây dựng và khai thác ứng dụng Hello WorldĐể bắt đầu, chúng tôi sẽ thiết lập những điều sau
Tôi đã tạo một mẫu ứng dụng sẽ thiết lập tất cả điều này cho bạn (miễn là bạn đã chạy const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });5 như đã được cập nhật ở trên). Để thiết lập nó, vui lòng thực hiện các lệnh sau từ dòng lệnh. const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });7____78 Điều này sẽ mất một vài phút để hoàn thành. Trong khi chờ đợi, bạn có thể xem Makefile để xem các lệnh có liên quan, thực hiện những điều sau đây
Vào cuối quá trình này, bạn sẽ thấy Hello Hello, world world trên một trang web Loading data by SQLOK - tôi đã thiết lập tất cả. Chúng tôi đã tạo ra một cơ sở dữ liệu với hai bảng và một số mẫu dữ liệu. Nhưng chúng tôi chưa làm gì với nó. Bước tiếp theo là cho phép ứng dụng web của chúng tôi truy xuất dữ liệu từ cơ sở dữ liệu Bất kể khi nào bạn tương tác với cơ sở dữ liệu quan hệ, bạn sẽ làm như vậy bằng cách gửi lệnh SQL đến ổ cắm mạng mà cơ sở dữ liệu đang nghe. Điều này đúng với tất cả các thư viện mà chúng tôi sẽ xem xét trong bài viết này - ở mức độ thấp nhất, tất cả chúng đều gửi lệnh SQL đến cơ sở dữ liệu và truy xuất bất kỳ đầu ra nào trở lại Vì vậy, lần đầu tiên chúng tôi sẽ xem xét khả năng tương tác với cơ sở dữ liệu của chúng tôi là làm điều đó - gửi các lệnh SQL. Để làm điều này, chúng tôi sẽ cài đặt thư viện PG JavaScript, cho phép chúng tôi gửi SQL đến cơ sở dữ liệu Postgres và truy xuất kết quả Để cài đặt thư viện PG, hãy thực hiện lệnh sau const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });9 Điều này sẽ tìm tải và cài đặt thư viện, đồng thời bổ sung nó vào các gói tệp. json và pack-lock. json của bạn. Please to Lừa đảo cam kết những thay đổi đó https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134140 https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134141 Để nói chuyện với cơ sở dữ liệu của chúng tôi, chúng tôi cần một số chi tiết
Hầu hết các cơ sở dữ liệu của thư viện sẽ cho phép chúng tôi thiết lập kết nối bằng cách cung cấp một đối tượng cho thư viện có khóa và giá trị cho tất cả các chi tiết đó hoặc bằng cách kết hợp tất cả chúng vào một Khi bạn thêm cơ sở dữ liệu vào ứng dụng Heroku, bạn sẽ tự động nhận một biến môi trường có tên là DataBase_URL, chứa tất cả các chi tiết bạn cần kết nối với cơ sở dữ liệu. You could see the value of your database your_url by way run https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134142 Điều này sẽ xuất ra tất cả các biến môi trường mà ứng dụng của bạn có thể sử dụng. Chỉ nên có một cái cho bây giờ, vì vậy bạn nên thấy một cái gì đó như thế này trong đầu ra Database_url https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134143 https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134144 https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134144 Trong trường hợp ví dụ của chúng tôi, điều đó bị phá vỡ như thế này SQL 3Giá trị cơ sở dữ liệu của bạn_URL sẽ khác nhau, nhưng cấu trúc sẽ giống nhau Bây giờ chúng tôi đã cài đặt thư viện PG và chúng tôi biết cách kết nối với cơ sở dữ liệu của chúng tôi, hãy thực hiện ví dụ đầu tiên về tương tác với cơ sở dữ liệu. Chúng tôi chỉ cần tìm tải danh sách người dùng và hiển thị chúng trên trang web của chúng tôi. At the header file index. js của chúng tôi, chúng tôi sẽ yêu cầu thư viện PG của chúng tôi và tạo các đối tượng kết nối cơ sở dữ liệu JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL }); Trong khối https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134145, chúng tôi sẽ thay đổi dòng Nhận để gọi một phương thức hiển thị danh sách người dùng từ cơ sở dữ liệu. https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134146 Cuối cùng, chúng tôi sẽ thực hiện chức năng Listusers JavaScript https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=1234123413414 Mã này đợi cho đến khi kết nối được thiết lập cho cơ sở dữ liệu của chúng tôi, sau đó gửi truy vấn SQL bằng hàm truy vấn và lấy kết quả Bây giờ, bước này có thể thất bại vì nhiều lý do khác nhau, vì vậy trong mã, chúng tôi kiểm tra để đảm bảo rằng chúng tôi đã có một số dữ liệu và nếu chúng tôi thực hiện, chúng tôi sẽ chỉ định kết quả. Vui lòng gửi cho người dùng chính của kết quả đối tượng của chúng tôi. Tiếp theo, chúng tôi chuyển kết quả cho chức năng đầu ra, sau đó phát hành kết nối cơ sở dữ liệu của chúng tôi In view/trang/index mode. ejs, chúng tôi có quyền truy cập vào kết quả đối tượng, vì vậy chúng tôi có thể hiển thị dữ liệu người dùng của mình như thế này HTML 8Bạn có thể tìm thấy mã với những thay đổi này ở đây https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134147 và https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134148 là tên của hai cột từ bảng người dùng trong cơ sở dữ liệu của chúng tôi Hãy phát triển các thay đổi này để chúng tôi có thể tìm thấy dữ liệu trong ứng dụng Heroku của chúng tôi https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134149 80 81Điều này sẽ mất một hoặc hai phút để khai thác. Khi lệnh đó đã thực hiện xong, hãy tải xuống trình duyệt của bạn và bạn sẽ thấy một danh sách người dùng trên trang web ví dụ mysqlVí dụ trên dành cho Postgres, nhưng mã cho các cơ sở dữ liệu quan hệ biến phổ biến khác nhau sẽ tương ứng với nhau. Ví dụ. nếu bạn đang sử dụng MySQL
84
JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });7 Lượt xem/trang/index. ejs vẫn giữ nguyên Bạn có thể xem dự án mẫu với những thay đổi này ở đây Bây giờ, hãy kiểm tra một vài thư viện được xây dựng trên nền tảng này, thêm các lớp vật liệu để cho phép bạn đọc và thao tác cơ sở dữ liệu theo cách giống như JavaScript giống như JavaScript Cho đến nay, chúng tôi đã thấy cách gửi SQL RAW đến cơ sở dữ liệu; 85Nếu chúng tôi muốn nhận được sự đánh giá của một cụ thể người dùng, hãy nói rằng người dùng đó có ID là 1, chúng tôi có thể sử dụng một cái gì đó như thế này 86Không có gì sai khi tương tác với cơ sở dữ liệu của bạn theo cách này, nhưng nó có thể cảm thấy hơi cồng kềnh và nó yêu cầu bạn phải tiếp tục thay đổi bánh răng. Bạn nghĩ về mã JavaScript của mình theo một cách nào đó, nhưng khi bạn cần suy nghĩ về dữ liệu trong cơ sở dữ liệu của mình, bạn phải bắt đầu suy nghĩ trong SQL Mục đích của phần còn lại của cơ sở dữ liệu thư viện mà chúng tôi sẽ xem xét là cho phép bạn xử lý dữ liệu trong cơ sở dữ liệu của mình giống như các đối tượng và mã JavaScript trong ứng dụng của bạn. Ngay bên dưới mui xe, đó là tất cả các SQL, nhưng bạn đã chiến thắng cần phải quan tâm đến nhiều điều đó trừ khi bạn muốn Knex - Tóm tắt SQLThư viện đầu tiên mà chúng tôi sẽ nói là Knex. Trang tài liệu mô tả Knex là một người xây dựng truy vấn trực tuyến và mục tiêu của nó là cung cấp một lớp đối tượng trên SQL RAW đầu tiên Cài đặt KnexKnex yêu cầu PG (hoặc MySQL nếu bạn sử dụng cơ sở dữ liệu MySQL). Chúng tôi đã cài đặt PG, vì vậy chúng tôi chỉ cần thêm Knex như thế này 87 88 89Use KnexTrang NPM cho KNEX mô tả nó như một người xây dựng truy vấn của người Viking. Knex lệnh SQL ở mức định mức cao nhất, nhưng không xa lắm. Chúng ta vẫn cần hiểu cơ bản SQL, nhưng chúng ta có thể viết nó trong một cú pháp giống như JavaScript hơn, thay vì phải cắt và xúc SQL. Quan trọng hơn, chúng ta có thể sử dụng các thành phần để xâu chuỗi các thuật ngữ KNEX theo cách thoải mái hơn nhiều cho các thành viên lập trình JavaScript Vì vậy, khi chúng tôi sử dụng PG, chúng tôi đã khẳng định điều này const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });70 Khi chúng ta sử dụng KNEX, chúng ta có thể viết điều này const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });71 Điều đó có thể không giống như một sự khác biệt, nhưng bởi vì cách chúng ta có thể tạo ra các cuộc gọi chức năng KNEX, chúng ta cũng có thể làm những công việc như thế này const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });72 Tại đây, chúng tôi nhận được 5 hồ sơ người dùng, bắt đầu ở vị trí 8 trong tổng số tất cả các bản ghi người dùng có thể phù hợp với truy vấn của tôi. Bạn có thể xem toàn bộ các tùy chọn có sẵn trong tài liệu KNEX Hãy thay đổi ứng dụng Express của chúng tôi để sử dụng KNEX để hiển thị một số bản ghi từ cơ sở dữ liệu của chúng tôi. First, in index. js instead of two lines after JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });6 … With this one JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });7 Sau đó, thay đổi việc thực hiện const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });73 to this thing JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });9 Tệp/trang/trang của chúng tôi/chỉ mục. ejs could keep the main key like before here Cam kết, phát triển và khai thác const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });74 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });75 81Khi bạn làm mới trình duyệt của mình, bạn sẽ thấy bản ghi người dùng từ 6 đến 10 trên trang Bạn có thể tìm thấy mã với những thay đổi này ở đây Ánh xạ quan hệ đối tượng (ORM)Knex cung cấp cho tôi một cách tương tác với cơ sở dữ liệu của chúng tôi, giống như JavaScript, nhưng chúng tôi vẫn được yêu cầu phải suy nghĩ theo cách tập trung vào cơ sở dữ liệu khi chúng tôi cần thao tác dữ liệu Ba thư viện tiếp theo mà chúng tôi sẽ nói đến đều được xây dựng trên đỉnh Knex (được xây dựng trên đỉnh của PG hoặc MySQL) và là những ví dụ về các thư viện Lập bản đồ đối tượng của các đối tượng hoặc các thư viện . Như tên gọi, mục đích của thư viện ORM là sự giao dịch giữa dữ liệu trong hệ thống cơ sở dữ liệu và các đối tượng JavaScript trong ứng dụng của bạn. Điều đó có nghĩa là, thay vì nghĩ về các bản ghi trong bảng người dùng khi bạn viết mã JavaScript của mình, bạn có thể nghĩ về các đối tượng người dùng. bảng người dùng khi bạn viết mã JavaScript, bạn có thể nghĩ về đối tượng người dùng Sự phản đốiThư viện đầu tiên mà chúng tôi sẽ xem xét đánh giá là sự phản đối, được xây dựng trên đỉnh Knex const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });77 88const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });79 Để làm nổi bật một số tiện ích của các thư viện ORM, chúng tôi sẽ thay đổi ứng dụng của mình để hiển thị cho người dùng và nhận xét của họ. Sự phản hồi đối tượng được xây dựng trên đầu của Knex, vì vậy trong chỉ mục tệp. js của tôi, chúng tôi phải chặn Knex tại chỗ và thêm một chút mã (tôi sẽ đặt mọi thứ vào chỉ mục tệp. js, to keep for every thứ đơn giản. Trong một ứng dụng thực tế, bạn sẽ chia mã thành các tệp riêng biệt) const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });60 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });61 Điều này cung cấp cho chúng tôi một mô hình lớp mà từ đó chúng tôi có thể kế thừa để xác định người dùng hai lớp và nhận xét. Chúng tôi sẽ xác minh bình luận trước JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });8 Class of them me to expand _______ 762 và phải thực thi hàm _______ 763 để biết sự phản hồi của đối tượng bảng cơ sở dữ liệu nào chứa các bản ghi cơ bảnClass const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });64 là tương tự, nhưng chúng tôi sẽ thêm một số hành vi vào lớp của chúng tôi; . Chúng tôi cũng sẽ phản bác rằng ____766 có const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });67 (tức là người dùng sở hữu số không hoặc nhiều nhận xét). Trong ORM -speak, điều này thường được mô tả là "có nhiều mối quan hệ" - tức là người dùng có nhiều nhận xét. This is code for this thing look as any JavaScript 30Class of them me to expand _______ 762 và phải thực thi hàm _______ 763 để biết sự phản hồi của đối tượng bảng cơ sở dữ liệu nào chứa các bản ghi cơ bảnClass const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });64 là tương tự, nhưng chúng tôi sẽ thêm một số hành vi vào lớp của chúng tôi; . Chúng tôi cũng sẽ phản bác rằng ____766 có const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });67 (tức là người dùng sở hữu số không hoặc nhiều nhận xét). Trong ORM -speak, điều này thường được mô tả là "có nhiều mối quan hệ" - tức là người dùng có nhiều nhận xét. This is code for this thing look as any JavaScript 31Class of them me to expand _______ 762 và phải thực thi hàm _______ 763 để biết sự phản hồi của đối tượng bảng cơ sở dữ liệu nào chứa các bản ghi cơ bảnClass const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });64 là tương tự, nhưng chúng tôi sẽ thêm một số hành vi vào lớp của chúng tôi; . Chúng tôi cũng sẽ phản bác rằng ____766 có const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });67 (tức là người dùng sở hữu số không hoặc nhiều nhận xét). Trong ORM -speak, điều này thường được mô tả là "có nhiều mối quan hệ" - tức là người dùng có nhiều nhận xét. This is code for this thing look as any. 32Chúng tôi xác định một đối tượng const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });68 bên trong lớp const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });64 của chúng tôi, với một từ khóa nhận xét duy nhất và giá trị phản đối rằng đây là ____770 trên lớp const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });71, trong đó giá trị của cột ID của bảng người dùng phù hợp với giá trị của cột user_id của cột user_id . https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134149 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });74 81Bây giờ chúng tôi đã xác định các lớp học của chúng tôi, hãy sử dụng chúng trong mã của chúng tôi. Tại đây, sự phát triển mới của const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });73 Ở đây, chúng tôi tìm tải 5 người dùng, sau đó cho từng người dùng đó, chúng tôi tìm tải nhận xét của họ và gán những người đó vào thuộc tính nhận xét của đối tượng người dùng của chúng tôi. In view/trang/index mode. ejs, tôi có thể hiển thị người dùng và nhận xét của họ như sauHTML Bạn có thể tìm thấy mã với những thay đổi này ở đây. Như thường lệ, cam kết và kết thúc quá trình phát triển JavaScript 33Class of them me to expand _______ 762 và phải thực thi hàm _______ 763 để biết sự phản hồi của đối tượng bảng cơ sở dữ liệu nào chứa các bản ghi cơ bảnClass const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });64 là tương tự, nhưng chúng tôi sẽ thêm một số hành vi vào lớp của chúng tôi; . Chúng tôi cũng sẽ phản bác rằng ____766 có const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });67 (tức là người dùng sở hữu số không hoặc nhiều nhận xét). Trong ORM -speak, điều này thường được mô tả là "có nhiều mối quan hệ" - tức là người dùng có nhiều nhận xét. This is code for this thing look as any Chúng tôi xác định một đối tượng const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });68 bên trong lớp const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });64 của chúng tôi, với một từ khóa nhận xét duy nhất và giá trị phản đối rằng đây là ____770 trên lớp const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });71, trong đó giá trị của cột ID của bảng người dùng phù hợp với giá trị của cột user_id của cột user_id Bây giờ chúng tôi đã xác định các lớp học của chúng tôi, hãy sử dụng chúng trong mã của chúng tôi. Tại đây, sự phát triển mới của const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });73. const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });76 Ở đây, chúng tôi tìm tải 5 người dùng, sau đó cho từng người dùng đó, chúng tôi tìm tải nhận xét của họ và gán những người đó vào thuộc tính nhận xét của đối tượng người dùng của chúng tôi. In view/trang/index mode. ejs, tôi có thể hiển thị người dùng và nhận xét của họ như sau HTML Bạn có thể tìm thấy mã với những thay đổi này ở đây. Như thường lệ, cam kết và kết thúc quá trình phát triểnBây giờ, khi tải lại trang, bạn sẽ thấy người dùng và nhận xét "N+1 lựa chọn vấn đề" Mã này nêu bật một vấn đề phổ biến mà mọi người gặp phải khi sử dụng các thư viện ORM, được gọi là vấn đề của N+1 lựa chọn const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });77 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });78 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });79 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });90 Đây là khối mã mà chúng tôi đã sử dụng để tìm tải người dùng và nhận xét của họ JavaScript 34Class of them me to expand JavaScript 35Class of them me to expand _______ 762 và phải thực thi hàm _______ 763 để biết sự phản hồi của đối tượng bảng cơ sở dữ liệu nào chứa các bản ghi cơ bảnClass const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });64 là tương tự, nhưng chúng tôi sẽ thêm một số hành vi vào lớp của chúng tôi; . Chúng tôi cũng sẽ phản bác rằng ____766 có const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });67 (tức là người dùng sở hữu số không hoặc nhiều nhận xét). Trong ORM -speak, điều này thường được mô tả là "có nhiều mối quan hệ" - tức là người dùng có nhiều nhận xét. This is code for this thing look as any 36Chúng tôi xác định một đối tượng const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });68 bên trong lớp const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });64 của chúng tôi, với một từ khóa nhận xét duy nhất và giá trị phản đối rằng đây là ____770 trên lớp const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });71, trong đó giá trị của cột ID của bảng người dùng phù hợp với giá trị của cột user_id của cột user_id JavaScript 37Class of them me to expand _______ 762 và phải thực thi hàm _______ 763 để biết sự phản hồi của đối tượng bảng cơ sở dữ liệu nào chứa các bản ghi cơ bảnCode in view/trang/index mode. ejs near as same same (Tôi đã xóa hàm fullName khỏi lớp người dùng) HTML 38Bạn có thể tìm thấy mã với những thay đổi này ở đây. Và tất nhiên, một lần nữa cam kết và khai thác https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134149 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });93____881 Next sectionThư viện cuối cùng mà chúng tôi sẽ xem xét là phần tiếp theo Phần tiếp theo khá quan trọng theo cách nó mong đợi dữ liệu của bạn được cấu trúc. Nếu bạn tuân theo các quy ước của nó, bạn có thể viết ít mã hơn và cho phép phần tiếp theo thực hiện nhiều công việc cho bạn. Cụ thể, phần tiếp theo có rất nhiều tính năng để giúp tạo các bảng cho bạn và theo mặc định, nó sẽ tạo ra chúng theo cấu trúc của riêng nó và các quy định đặt tên Cơ sở dữ liệu mà chúng tôi đã sử dụng được cấu trúc là chính xác theo cách tiếp theo, vì vậy chúng tôi cần thêm một chút cấu hình bổ sung để cho phép phần tiếp theo hoạt động với nó Installing section nextĐể xóa giá sách và cài đặt phần tiếp theo, hãy chạy các lệnh sau const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });95 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });96 88const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });98 Use the next sectionTrọng chỉ số. js, replace the after lines JavaScript 39… With this thing JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });0 … With this thing JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });1 … With this thing Sau đó, thay thế các lớp định nghĩa cho người dùng và nhận xét bằng mã này Lưu ý rằng chúng tôi đã chuyển hai đối tượng cho const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });99. Đối tượng đầu tiên xác định các thuộc tính của đối tượng của tôi và thứ hai chứa một số siêu dữ liệu Trong trường hợp này, chúng tôi đã nói với phần tiếp theo rằng cơ sở dữ liệu củng cố lớp người dùng được gọi là 'người dùng' (theo mặc định, phần tiếp theo sẽ suy nghĩ rằng bảng được gọi là 'người dùng' Phần tiếp theo giúp bạn rất dễ dàng ghi mã sẽ tạo các bảng cho bạn và khi nó làm như vậy, nó sẽ thêm các cột dấu thời gian này và đặt các giá trị của chúng phù hợp khi bạn ghi vào cơ sở dữ liệu. Các tài liệu tiếp theo là tuyệt vời, và có nhiều hơn về điều này JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });2 … With this thing JavaScript const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });3 … With this thing const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });83 Sau đó, thay thế các lớp định nghĩa cho người dùng và nhận xét bằng mã này const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });84 Lưu ý rằng chúng tôi đã chuyển hai đối tượng cho const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });99. Đối tượng đầu tiên xác định các thuộc tính của đối tượng của tôi và thứ hai chứa một số siêu dữ liệu. https://anonystick.com?id=1234&search=query%20string%20parameters%20in%20JavaScript&token=12341234134149 const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });86 81Trong trường hợp này, chúng tôi đã nói với phần tiếp theo rằng cơ sở dữ liệu củng cố lớp người dùng được gọi là 'người dùng' (theo mặc định, phần tiếp theo sẽ suy nghĩ rằng bảng được gọi là 'người dùng'Phần tiếp theo giúp bạn rất dễ dàng ghi mã sẽ tạo các bảng cho bạn và khi nó làm như vậy, nó sẽ thêm các cột dấu thời gian này và đặt các giá trị của chúng phù hợp khi bạn ghi vào cơ sở dữ liệu. Các tài liệu tiếp theo là tuyệt vời, và có nhiều hơn về điều này const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });81 mà chúng tôi chuyển đến Hasmany là một trong những nơi mà chúng tôi phải nói phần tiếp theo Chúng tôi không tuân theo các quy ước của nó. Nó mong đợi (và sẽ tạo cho chúng tôi) một cột có tên UserID để liên kết nhận xét với người dùng Party in function const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });73 của chúng tôi, chúng tôi có thể thay thế tất cả các mã này … With this line duy nhất Chúng tôi cũng phải thực hiện một thay đổi nhỏ trong chế độ xem/trang/index. ejs. Replace this line
Hanh phúc truy vấn Chúng ta có thể chạy truy vấn SQL trong JavaScript không?Trường hợp sử dụng điển hình để thực thi SQL từ JavaScript là cập nhật trạng thái thực thi vào thời gian chạy trong tuần hoàn hoặc để lưu các bản ghi bị từ chối do xác thực vào bảng lỗi. Ví dụ dưới đây cho thấy cách thực thi SQL từ JavaScript Bạn có thể viết SQL bằng HTML không?Bạn có thể xuất HTML từ SQL vì SQL Server có hỗ trợ tích hợp để xuất XML và HTML được hiểu rõ nhất là một phương thức ngôn ngữ hơi lạ của XML truyền đạt ý nghĩa cho các thẻ đã được xác định trước đó. Có rất nhiều trường hợp bên cạnh đó cấu trúc HTML là cách rõ ràng nhất để truyền đạt các bảng, danh sách và thư mục. vì SQL Server có hỗ trợ tích hợp sẵn để xuất XML và HTML được hiểu tốt nhất là một phương ngữ hơi kỳ lạ của XML truyền đạt ý nghĩa cho các thẻ được xác định trước. Có rất nhiều trường hợp cạnh trong đó cấu trúc HTML là cách rõ ràng nhất để giao tiếp các bảng, danh sách và thư mục. SQL hay JavaScript cái nào tốt nhất?JavaScript là một ngôn ngữ lập trình đầy đủ mà sau đó được tận dụng để giúp bạn viết mã phía máy chủ. SQL, là nơi bạn học cách làm việc với cơ sở dữ liệu. Thực tế đây là một loại kiến thức về back-end |