![](/img/trans.png)
[英]How can I fix my code to make it send the json data as a response to postman's GET requests?
[英]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")
})
要验证的事项:
req.params.userId
不为空。findById
时,userId 必须是有效的 ObjectId。 即,它必须是mongoose.Types.ObjectId
类型。因此,您可以这样做:
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.