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ễ
Đề bài
const express = require('express');
const mongoose = require('mongoose');
const app = express();
app.use(express.json());

mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });

Đề bài
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 án
Lờ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.

Cùng chương 6

Xuất hiện trong 2 bộ đề