Tôi đang gặp khó khăn khi tìm ra cách tôi có thể truy xuất dữ liệu trong MongoDB và tìm nạp nó trong tệp HTML/EJS. Trong tệp HTML/EJS, có một nút nếu người dùng nhấp vào nó, nó sẽ hiển thị tất cả dữ liệu trong bộ sưu tập cơ sở dữ liệu MongoDB.
Tôi đã tìm thấy một số câu hỏi tương tự như câu hỏi của tôi nhưng nó không trả lời câu hỏi của tôi. Tôi vẫn còn mới ở Node JS và MongoDB vì vậy tôi không thực sự có ý tưởng về cách tôi có thể đạt được mục tiêu của mình.
Đây là index.js
của tôi
var express = require["express"];
var app = express[];
app.set['view engine', 'ejs']
//var hostname = '127.0.0.1';
var port = 3000;
var mongoose = require["mongoose"];
app.set['view engine','jade'];
mongoose.Promise = global.Promise;
mongoose.connect["mongodb://localhost:27017/commuters", {useNewUrlParser: true}];
app.use['/gui', express.static['gui']];
//use to link static file in the folder named public
var nameSchema = new mongoose.Schema[{
route : String,
origin : String,
destination : String,
estimatedTimeOfArrival : String,
date : String,
time : String
},
{
collection : 'boardingAlight'
}];
//collection is the name of collection that you created in the same database name above
var User = mongoose.model["User", nameSchema];
var bodyParser = require['body-parser'];
app.use[bodyParser.json[]];
app.use[bodyParser.urlencoded[{ extended: true, useNewUrlParser : true }]];
app.use["/", [req, res] => {
res.sendFile[__dirname + "/gui/index.html"];
}];
//FOR PORT CONNECTION
//localhost:3000
app.listen[port, [] => {
console.log["Server listening on port " + port];
}];
Khi tôi đã tạo tệp EJS bằng một nút, tôi cần hiển thị tất cả dữ liệu trong bảng. Cảm ơn bạn!
Tài liệu về nhà → node.js → Node.js
Bạn có thể sử dụng các hoạt động đọc để truy xuất dữ liệu từ cơ sở dữ liệu MongoDB của bạn. Có nhiều loại hoạt động đọc truy cập dữ liệu theo các cách khác nhau. Nếu bạn muốn yêu cầu kết quả dựa trên một tập hợp các tiêu chí từ bộ dữ liệu hiện có, bạn có thể sử dụng một thao tác tìm kiếm như các phương thức find[]
hoặc
const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
0.Bạn cũng có thể chỉ định thêm thông tin bạn đang yêu cầu bằng cách bao gồm các tham số bổ sung hoặc bằng cách chuỗi các phương thức khác như:
Sắp xếp kết quả
Bỏ qua kết quả trả về
Giới hạn số lượng kết quả trả lại
Chỉ định các trường nào để trả về
Bạn cũng có thể sử dụng một hoạt động tổng hợp để truy xuất dữ liệu. Loại hoạt động này cho phép bạn áp dụng một đường ống biến đổi theo thứ tự cho dữ liệu phù hợp.
Nếu bạn muốn theo dõi cơ sở dữ liệu cho dữ liệu đến phù hợp với một tập hợp các tiêu chí, bạn có thể sử dụng thao tác đồng hồ để được thông báo trong thời gian thực khi chèn dữ liệu khớp.
Ghi chú
Hoạt động truy vấn của bạn có thể trả về một tham chiếu đến một con trỏ chứa các tài liệu phù hợp. Để tìm hiểu cách kiểm tra dữ liệu được lưu trữ trong con trỏ, hãy xem trang Nguyên tắc cơ bản con trỏ.
Phương thức find[]
được gọi trên đối tượng
const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
2 tham chiếu bộ sưu tập bạn muốn truy vấn. Phương thức chấp nhận một tài liệu truy vấn mô tả các tài liệu bạn muốn truy xuất. Để biết thêm thông tin về cách chỉ định tài liệu truy vấn của bạn, hãy xem hướng dẫn của chúng tôi về cách chỉ định truy vấn.Nếu bạn giải quyết
const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
3 được trả về bởi find[]
, bạn sẽ nhận được tham chiếu đến const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
5 mà bạn có thể điều hướng các tài liệu phù hợp. Nếu bạn giải quyết const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
3 được trả về bởi const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
0, bạn sẽ nhận được tài liệu phù hợp hoặc const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
8 nếu không có trận đấu.Thí dụ
Một nhà hàng pizza muốn tìm tất cả các pizza được đặt hàng bởi Lemony Snicket ngày hôm qua. Họ chạy truy vấn find[]
sau trên bộ sưu tập
await cursor.forEach[console.dir];
0: const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
Khi hoạt động trả về, biến
await cursor.forEach[console.dir];
1 tham chiếu đến const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
5. Bạn có thể in các tài liệu được truy xuất bằng phương pháp await cursor.forEach[console.dir];
3 như được hiển thị bên dưới:await cursor.forEach[console.dir];
Đầu ra có thể giống như sau:
[ { name: "Lemony Snicket", type: "horseradish pizza", qty: 1, status: "delivered", date: ... }, { name: "Lemony Snicket", type: "coal-fired oven pizza", qty: 3, status: "canceled", date: ...}, ... ]
Xem Find [] và FindOne [] để biết các ví dụ có thể chạy hoàn toàn.
Nếu bạn muốn chạy một đường ống xử lý tùy chỉnh để truy xuất dữ liệu từ cơ sở dữ liệu của mình, bạn có thể sử dụng phương thức
await cursor.forEach[console.dir];
4. Phương pháp này chấp nhận các biểu thức tổng hợp để chạy theo trình tự. Các biểu thức này cho phép bạn lọc, nhóm và sắp xếp dữ liệu kết quả từ một bộ sưu tập.Thí dụ
Một nhà hàng pizza muốn tìm tất cả các pizza được đặt hàng bởi Lemony Snicket ngày hôm qua. Họ chạy truy vấn find[]
sau trên bộ sưu tập
await cursor.forEach[console.dir];
0: const aggregateResult = await orders.aggregate[[ { $match: { date: { $gte: new Date[new Date[].getTime[] - 1000 * 3600 * 24 * 7], $lt: new Date[], }, }, }, { $group: { _id: "$status", count: { $sum: 1, }, }, }, ]];
Khi hoạt động trả về, biến
await cursor.forEach[console.dir];
1 tham chiếu đến const findResult = await orders.find[{ name: "Lemony Snicket", date: { $gte: new Date[new Date[].setHours[00, 00, 00]], $lt: new Date[new Date[].setHours[23, 59, 59]], }, }];
5. Bạn có thể in các tài liệu được truy xuất bằng phương pháp await cursor.forEach[console.dir];
3 như được hiển thị bên dưới:await cursor.forEach[console.dir];
Đầu ra có thể giống như sau:
[ { _id: 'delivering', count: 5 }, { _id: 'delivered', count: 37 }, { _id: 'created', count: 9 } ]
Xem Find [] và FindOne [] để biết các ví dụ có thể chạy hoàn toàn.aggregation for more information on how to construct an aggregation pipeline.
Nếu bạn muốn chạy một đường ống xử lý tùy chỉnh để truy xuất dữ liệu từ cơ sở dữ liệu của mình, bạn có thể sử dụng phương thức
await cursor.forEach[console.dir];
4. Phương pháp này chấp nhận các biểu thức tổng hợp để chạy theo trình tự. Các biểu thức này cho phép bạn lọc, nhóm và sắp xếp dữ liệu kết quả từ một bộ sưu tập.Thí dụ
Một nhà hàng pizza muốn nhận thông báo bất cứ khi nào đơn đặt hàng pizza mới xuất hiện. Để thực hiện điều này, họ tạo ra một đường ống tổng hợp để lọc các hoạt động chèn và trả lại các trường cụ thể. Họ chuyển đường ống này cho phương thức
[ { name: "Lemony Snicket", type: "horseradish pizza", qty: 1, status: "delivered", date: ... }, { name: "Lemony Snicket", type: "coal-fired oven pizza", qty: 3, status: "canceled", date: ...}, ... ]
0 được gọi trên bộ sưu tập await cursor.forEach[console.dir];
0 như hình dưới đây: const changeStream = orders.watch[[ { $match: { operationType: "insert" } }, { $project: { "fullDocument.name": 1, "fullDocument.address": 1, }, }, ]]; changeStream.on["change", change => { const { name, address } = change.fullDocument; console.log[`New order for ${name} at ${address}.`]; }];
Để biết ví dụ có thể chạy được của phương thức
[ { name: "Lemony Snicket", type: "horseradish pizza", qty: 1, status: "delivered", date: ... }, { name: "Lemony Snicket", type: "coal-fired oven pizza", qty: 3, status: "canceled", date: ...}, ... ]
0 bằng trình điều khiển NodeJS, hãy xem ví dụ sử dụng luồng thay đổi.