如何在 MEAN 应用程序中的同一 HTTP 请求中调用多个方法

Posted

技术标签:

【中文标题】如何在 MEAN 应用程序中的同一 HTTP 请求中调用多个方法【英文标题】:How to call multiple method in same HTTP request in MEAN app 【发布时间】:2020-04-28 16:45:43 【问题描述】:

我需要根据优先顺序发送 http 请求并从服务器获取响应。 这是我的 admin.js 文件

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 方法和 delete 方法带有相同的 http 请求。

这可能吗?如果是,我如何在前端实现功能以使用 Angular 8 执行该过程。

【问题讨论】:

【参考方案1】:

是的,这可以调用 2 个 api:

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);
   );

【讨论】:

以上是关于如何在 MEAN 应用程序中的同一 HTTP 请求中调用多个方法的主要内容,如果未能解决你的问题,请参考以下文章

mean.io - 错误:“请求实体太大”。如何在meanio模块之外增加bodyParser限制?

如何将 MEAN Stack 部署到网络主机

Ionic 2 MEAN 应用程序不会在获取请求时返回更新的数据

如何从 Angular 6 向 node.js 发送 https 请求

如何在 MEAN STACK Web 应用程序中启用 CORS?

如何在 http post 请求中发送大型 csv