What is the response when a GET request is made to `http://localhost:3000/api/users/search?name=al` in the following Express application?
4 phương ánCó giải thích
const express = require('express');
const mongoose = require('mongoose');
const app = express();mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
const userSchema = new mongoose.Schema({ name: String });
const User = mongoose.model('User', userSchema);
app.get('/api/users/search', async (req, res) => {
const { name } = req.query;
const users = await User.find({ name: new RegExp(name, 'i') });
res.json(users);
});
app.listen(3000);Assume the database has users: { name: "Alice" }, { name: "Bob" }, { name: "Alan" }.
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "[{ name: "Alice" }, { name: "Alan" }]". Lần theo mã: request GET tới /api/users/search?name=al làm req.query có name bằng al; route tạo new RegExp(name, 'i'), tức biểu thức chính quy al với cờ i không phân biệt hoa thường, rồi User.find lọc các tài liệu có name chứa chuỗi al ở bất kỳ vị trí nào. Alice bắt đầu bằng Al nên khớp, Alan cũng bắt đầu bằng Al nên khớp, Bob không chứa al nên bị loại; res.json trả mảng hai tài liệu (thực tế mỗi tài liệu còn kèm _id và __v, ở đây được lược đi). "[{ name: "Alice" }, { name: "Bob" }, { name: "Alan" }]" sai vì Bob không khớp mẫu. "[]" chỉ xảy ra nếu bỏ cờ i, khi đó al thường không khớp Al hoa; ở đây cờ i có mặt. "Throws an error due to invalid regex" sai vì al là mẫu hợp lệ, RegExp chỉ ném lỗi khi chuỗi có cú pháp hỏng như dấu ngoặc mở mà không đóng.