оно работает на стороне клиента, но не работает с помощью postmam
это приложение используется для добавления базовой информации о пользователе
Код: Выделить всё
const express = require ("express")
const {auth,upload}= require("../utils/index.js");
const router = express.Router();
const normalize = require("normalize-url");
const {check , validationResult}= require("express-validator");
const Profile = require("../models/Profile.js");
const User = require("../models/User.js");
const Post = require("../models/Post.js");
router.post("/",
auth,
check("status", "status is required").notEmpty(),
check("skills","Skills is required").notEmpty(),
async(req,res)=> {
const errors = validationResult(req);
if(!errors.isEmpty()){
return res.status(400).json({errors:errors.array()});
}
const {website,skills,linkedin,youtupe,...rest}= req.body;
const profile ={
user: req.user.id,
website: website && website !=="" ? normalize(website,{forceHttps:true}):"",
skills:Array.isArray(skills)? skills : skills.split(",").map(skills => skills.trim()),
...rest
}
const socialfiels={youtupe,linkedin};
for(let key in socialfiels){
const value= socialfiels[key];
if(value && value !=""){
socialfiels[key]= normalize(value,{forceHttps:true});
}
}
profile.social=socialfiels;
try{
let profileObject = await Profile.findOneAndUpdate(
{ user: req.user.id },
{ $set: profile },
{ new: true, upsert: true }
);
return res.json({profileObject});
}catch(err){
console.error(err.message);
return res.status(500).send(err.message);
}
});
router.get("/me",auth ,async(req,res)=>{
try{
const profile= await Profile.findOne({
user: req.user.id,
}).populate("user",["name"])
if(!profile){
return res.status(400).json({msg:"there is no profile for this user"});
}
res.json({profile})
}catch(err){
console.error(err.message);
return res.status(500).send(err.message);
}
})
router.get("/",auth ,async(req,res)=>{
try{
const profiles= await Profile.find().populate("user",["name"]);
res.json({profiles})
}catch(err){
console.error(err.message);
return res.status(500).send(err.message);
}
})
router.get("/user/:user_id",auth ,async(req,res)=>{
try{
const profile= await Profile.findOne({
user: req.params.user_id,
}).populate("user",["name"]);
if(!profile){
return res.status(400).json({msg:"there is no profile for given user"});
}
res.json(profile);
}catch(err){
console.error(err.message);
return res.status(500).send(err.message);
}
})
router.delete("/",auth, async (req,res)=>{
try{
await Promise.all([
Post.deleteMany({user: req.user.id}),
Profile.findOneAndDelete({user : req.user.id }),
User.findOneAndDelete({_id:req.user.id})
]);
res.json({msg:"user information is deleted "})
}catch(err){
console.error(err.message);
return res.status(500).send(err.message);
}
});
router.post("upload",auth , async (req,res)=>{
try{
upload(req,res,async (err)=>{
if(err){
res.status(500).send(`Server Error: ${err}`);
}else{
res.status(200).send(req.user.id);
}
})
}catch(err){
console.error(err.message);
return res.status(500).send(err.message);
}
})
router.put("/exp",auth,
check("title","Title is required").notEmpty(),
check("company","company is required").notEmpty(),
check("from","from data is required and needs to be from the past").notEmpty()
.custom((value , {req})=>{
return req.body.to? value < req.body.to : true;
}),
async(req,res)=>{
const error = validationResult(req);
if(!error.isEmpty ()){
return res.status(400).json({error:error.array()});
try{
const Profile = await Profile.findOne({user: req.user.id});
Profile.experience.unshift(req.body);
await Profile.save();
return res.json(profile);
}catch(err){
console.error(err.message);
return res.status(500).send( err.message);
});
router.delete("/exp/:exp_id",auth,async (req,res)=>{
try{
const Profile = await Profile.findOne({user: req.user.id});
Profile.experience = Profile.experience.filter(exp=>{
return exp._id.toString()!== req.params.exp_id;
});
await Profile.save();
return res.json(profile);
}catch(err){
console.error(err.message);
console.log(err);
return res.status(500).send(err. сообщение);
});
router.put(
"/education",
auth,
check("Школа", "Требуется школа" ).notEmpty(),
check("степень", "Требуется степень").notEmpty(),
check("from", "Укажите дату начала и она должна быть из прошлого" )
.notEmpty()
.custom((value, { req }) => {
return req.body.to ? value < req.body.to : true;
}),
async (req, res) => {
const error = validationResult(req);
if (!errors.isEmpty()) {
return res. status(400).json({ error: error.array() });
try{
const Profile = await Profile.findOne({user: req. user.id});
Profile.education.unshift(req.body);
await Profile.save();
return res.json(profile);
}catch(err){
console.error(err.message);
return res.status(500).send(err.message);
})
router.delete("/education/:education_id",auth,async (req,res)=>{
try{
const Profile = await Profile.findOne({user: req.user.id});
Profile.education = Profile.education.filter(edu=>{
return education._id.toString()!== req. params.edu_id;
});
await Profile.save();
return res.json(profile);
}catch(err){
console.error(err.message);
return res.status(500).send(err.message);
})
module.exports = router;
Код: Выделить всё
const mongoose = require("mongoose");
const ProfileSchema = new mongoose.Schema({
user:{
type:mongoose.Schema.Types.ObjectId,
ref:"user"
},
company:{
type:String
},
website:{
type:String
},
country:{
type:String
},
location:{
type:String
},
status:{
type:String,
required:true
},
skills:{
type:[String],
required:true,
},
bio:{
type:String,
},
experience:[
{
title:{
type:String,
required:true,
},
company:{
type:String,
required:true
},
location:{
type:String
},
from:{
type:Date,
},
to:{
type:Date
},
current:{
type:Boolean,
default:false,
},
description:{
type:String,
},
},
],
education:[{
School:{
type:String,
required:true,
},
degree:{
type:String,
required:true,
},
from:{
type:Date,
required:true,
},
to:{
type:Date,
},
current:{
type:Boolean,
default:false,
},
description:{
type:String,
},
},
],
social:{
youtupe:{
type:String,
},
linkedin:{
type:String,
},
},
date:{
type:Date,
default:Date.now,
},
});
module.exports = Profile = mongoose.model("Profile", ProfileSchema);
it's working on the client side but it's not working using postman and this code is used to add data from the user like education skills social media
Источник: https://stackoverflow.com/questions/781 ... s-not-work