What is the response when a POST request is made to `http://localhost:3000/api/users` with the body `{ "name": "Alice", "email": "alice@example.com" }` in the following Express application?
4 phương ánCó giải thíchDễ
const express = require('express');
const mongoose = require('mongoose');
const app = express();
app.use(express.json());mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
const userSchema = new mongoose.Schema({ name: String, email: String });
const User = mongoose.model('User', userSchema);
app.post('/api/users', async (req, res) => {
try {
const user = await User.create(req.body);
res.status(201).json(user);
} catch (err) {
res.status(400).json({ error: err.message });
}
});
app.listen(3000);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: "201 with { _id: "...", name: "Alice", email: "alice@example.com" }". Lần theo mã: express.json() phân tích body JSON nên req.body là đối tượng có name và email; User.create(req.body) lưu một tài liệu mới, Mongoose tự sinh _id, và vì các lệnh được đệm (buffering) cho tới khi kết nối xong nên không lỗi dù connect chưa hoàn tất lúc request tới; await trả tài liệu đã lưu rồi res.status(201).json(user) gửi mã 201 kèm tài liệu, thực tế còn có trường __v bằng 0 do Mongoose thêm. "400 with { error: "Validation failed" }" sai vì schema chỉ khai báo hai trường String, không có validator nào nên dữ liệu hợp lệ. "500 with { error: "Internal Server Error" }" sai vì khối catch chỉ trả 400, mã không có nhánh nào trả 500. "Throws an unhandled promise rejection" sai vì mọi lỗi của await đều được try/catch bắt.