繁体   English   中英

如何在 Postman、GET request Express 中显示 JSON 响应?

[英]How can I show JSON response in Postman, GET request Express?

I am trying to get a single the information for a single user by Id using mongoose and express.The function I have now gives me a 200 status code, but the JSON Object is not showing up in Postman what am I missing?

我从我的文件中发布了我正在使用的 controller 和 model。

controller

const express = require("express");

const classworkRouter = express.Router();

const User = require("../../models/User");

classworkRouter.get("/:userId", (req, res) => {
    // const Id = req.params.userId;

        User.findById(req.params.userId).then((err, user)=>{
            if(err) {
                res.status(500);
                console.log("errr 500")
            } else {
                res.json({"user" : user})
            }
        })
       

})



module.exports = classworkRouter;

model

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const ClassworkSchema = new Schema({
    name: String,
    time: Date,
    todo: String,
    isDone: false
});

const OutcomesSchema = new Schema({
    name: String,
    time: Date,
    todo: String, 
    isDone: false,
    isApproved: false
})

const MeetupSchema = new Schema({
    name: String,
    time: Date,
    location: String,
    attended: false
})
const UserSchema = new Schema({
    name: {
      type: String,
      required: true
    },
    email: {
      type: String,
      required: true
    },
    password: {
      type: String,
      required: true
    },
    date: {
      type: Date,
      default: Date.now
    },
    classwork: [ClassworkSchema],
    outcomes: [OutcomesSchema],
    meetups: [MeetupSchema],
  });



module.exports = User = mongoose.model('users', UserSchema);

then指出了两个参数,但then有 1 个参数 - 解析Promise的结果。 如果你需要得到一个可能的错误,你需要使用catch

User.findById(req.params.userId)
    .then((user)=>{
    if(!user) {
         res.status(404).end();
         console.log("user not found")
    } else {
        res.json({"user" : user})
    }})
    .catch((err)=>{
        res.status(500).end();
        console.log("errr 500")
    })

要验证的事项:

  1. req.params.userId不为空。
  2. 当您使用findById时,userId 必须是有效的 ObjectId。 即,它必须是mongoose.Types.ObjectId类型。
  3. 检查您是否传递了现有的 userId。

因此,您可以这样做:

var ObjectId = require('mongoose').Types.ObjectId;
classworkRouter.get("/:userId", (req, res) => {
      const { userId } = req.params;

        if(!userId){
           return res.status(400).json({//handle error })
        }
       
        if(!ObjectId.isValid(userId)){
           return res.status(400).json({//handle error })
        }

        User.findById(userId,(err, user) {
            if(err) {
                res.status(500);
                console.log("errr 500")
            } else {
                if(!user)
                res.status(400).json({message:"user not found"});

                res.status(200).json({"user" : user})
            }
        })
       

})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM