Adakah sesiapa mempunyai idea bagaimana saya boleh mengubah suai kod ini supaya saya boleh mencari berdasarkan tajuk atau rating atau kedua-duanya? Saya telah mencuba beberapa pendekatan, termasuk menggunakan $and operator, tetapi tidak berjaya
static async getMovies({
filters = null,
page = 0,
moviesPerPage = 20,
} = {}) {
let query = {}
if (filters) {
if ("title" in filters) {
console.log(filters["title"]);
query.title = { $regex: filters["title"], $options: "i" };
} if ("rated" in filters) {
query.rated = { $eq: filters["rated"] };
}
}
let cursor
try {
cursor = await movies.find(query)
.limit(moviesPerPage)
.skip(moviesPerPage * page);
const moviesList = await cursor.toArray();
for (let i = 0; i < moviesList.length; i++) {
const movie = moviesList[i];
const movieReviews = await reviews
.find({ movie_id: movie._id })
.toArray();
movie.review = movieReviews;
}
const totalNumMovies = await movies.countDocuments(query);
return { moviesList, totalNumMovies };
} catch (e) {
console.error(`无法发出查找命令,${e}`);
return { moviesList: ["error"], totalNumMovies: 0 };
}
} 1 jawapan
Jika anda ingin mencari berdasarkan nama atau rating, atau kedua-duanya, anda boleh menggunakan pertanyaan di bawah. Anda tidak perlu menggunakan operator $eq dengan penapis undian. Fungsi cari Mongoose akan memadankan nilai secara langsung tanpa menggunakan operator $eq.
if (filters?.title) {
query.title = { $regex: `^${filters.title.replace(/[-[\]{}()*+?.,\/^$|#\s]/g, "\$&")}`, $options: "i" }
}
if (filters?.rated) {
query.rated = filters.rated
}
console.log(query)
Alat panas Tag
Hot Questions
Hot Tools
vc9-vc14 (32+64 bit) koleksi perpustakaan masa jalan (pautan di bawah)
Muat turun koleksi perpustakaan runtime yang diperlukan untuk pemasangan phpStudy
VC9 32-bit
VC9 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu
Kotak alat pengaturcara PHP versi penuh
Programmer Toolbox v1.0 PHP Persekitaran Bersepadu
VC11 32-bit
VC11 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Topik panas





