Как вызвать несколько методов в одном HTTP-запросе в приложении MEAN - PullRequest
1 голос
/ 11 января 2020

Мне нужно отправить http запросы и получить ответ от сервера в порядке очередности. Это мой админ. js file

const express = require('express')
const router = express.Router()
const User = require('../models/User')
const deletedUser = require('../models/deletedUser')
const multer = require('multer')

//all users
router.get('/users', async(req,res)=>{
    try{
        const user = await User.find();
        res.send(user);
    }catch(err){
       res.json({message: err});
    }
});

//specific users http://localhost:3000/takeaction/users/5d9ec527be723459c01b99b2
router.get('/users/:Id', async(req,res)=>{
    try{
        const user = await User.findById(req.params.Id);
        res.json(user);
    }catch(err){
        res.json({message: err});
    }
});
// take action by id
router.post('/delete/:Id', async(req,res)=>{
    const selectedUser = await User.findById(req.params.Id);
    // const deleteduser = new deletedUser({})
    // res.json(selectedUser._id);
    const deleteduser = new deletedUser({
        _id: selectedUser._id,
        email: selectedUser.email,
        password: selectedUser.password,
        username: selectedUser.username,
        firstname: selectedUser.firstname,
        lastname: selectedUser.lastname,
        telephone: selectedUser.telephone,
        line1: selectedUser.line1,
        line2: selectedUser.line2,
        line3: selectedUser.line3,
        nic: selectedUser.nic,
        broadcasts: selectedUser.broadcasts,
        selling: selectedUser.selling,
        bookmarks: selectedUser.bookmarks,
        sellerReply: selectedUser.sellerReply,
        finalized: selectedUser.finalized,
        overallrate: selectedUser.overallrate,
        ratings : selectedUser.ratings,
        profileImage: selectedUser.profileImage,
        replying: selectedUser.replying
    });
    deleteduser.save().then(data=>{
        res.json(data);
    }).catch(err=>{
        res.json({message: err})
    });

});

router.delete('/deleteuser/:id', async(req,res)=>{
    try {
        const deleteduser = await User.remove({_id: req.params.id});
        res.json(deleteduser);
        console.log("User deleted!!")
    } catch (error) {
        res.json({message: error});
    }
});



module.exports = router

Сначала мне нужно вызвать метод post из файла службы переднего плана, и в то же время мне нужно вызвать метод delete. Но этот метод удаления следует вызывать после выполнения определенного метода post.

И важно то, что метод post и метод удаления приходят с одинаковым http-запросом.

Возможно ли это ? Если это так, как я могу реализовать функцию во внешнем интерфейсе для выполнения этого процесса, используя angular 8.

1 Ответ

1 голос
/ 11 января 2020

да это можно назвать 2 apis:

let userId = // user id here ;

    this.http
    .post<any>(`/delete/${userId}`)
    .subscribe((resp) => {

         this.http.delete<any>(`/deleteuser/${userId}`).subscribe((res) => {
               //deleted successfully 
         },err=>{
              console.log('err',err);
         });


    },err=>{
        console.log('err',err);
   });
...