Sélectionnez la requête dans MongoDB
-- mongo
db.people.find()
--sql
SELECT *
FROM people
Tiny Coders
-- mongo
db.people.find()
--sql
SELECT *
FROM people
db.inventory.find( {} )
const Books = require("Books.js")
async getBooks(req, res, next) {
let query;
// Copy req.query
let reqQuery = { ...req.query };
// Fields to exclude
const removeFields = ["select", "sort"];
// Loop over removeFields and delete them from reqQuery
removeFields.forEach(param => delete reqQuery[param]);
// Create query string
let queryStr = JSON.stringify(reqQuery);
// Create operators ($gt, $gte, etc)
queryStr = queryStr.replace(
/\b(gt|gte|lt|lte|in)\b/g,
match => `$${match}`
);
// Find resource
query = Books.findQuery(JSON.parse(queryStr));
// Select Fields
if (req.query.select) {
const fields = req.query.select.split(",").join(" ");
query = query.select(fields);
}
// Sort
if (req.query.sort) {
const sortBy = req.query.sort.split(",").join(" ");
query = query.sort(sortBy);
} else {
query = query.sort("-createdAt");
}
// Pagination
const page = parseInt(req.query.page, 10) || 1;
const limit = parseInt(req.query.limit, 10) || 10;
const startIndex = (page - 1) * limit;
const endIndex = page * limit;
const total = await Books.countDocuments();
query = query.skip(startIndex).limit(limit);
// Executing query
let books = await query;
// Pagination result
const pagination = {};
if (endIndex < total) {
pagination.next = {
page: page + 1,
limit,
};
}
if (startIndex > 0) {
pagination.prev = {
page: page - 1,
limit,
};
}
res.status(200).json({
success: true,
count: books.length,
pagination,
data: books,
});
}
let userBuilds = [];
Wishlist.find({}, function (err, builds) {
if (err)
{
console.log("Cannot fetch wishlisted builds");
return res.redirect('back');
}
async.forEachOf(builds, function (build, key, callback) {
Builds.find({ name: build.name }, function (err, detailBuild) {
if (err)
{
console.log("Cannot fetch detail from wishlisted builds");
return res.redirect('back');
}
userBuilds.push(detailBuild[0]);
callback();
});
}, function (err) {
if (err)
{
console.log("Error in rendering page");
return res.redirect('back');
}
return res.render('wishlist', {
title: "Wishlist",
email: req.session.email ? req.session.email : undefined,
builds: userBuilds,
layout: false
});
});
});