如何使用节点 js 控制台拒绝邮递员中的解析消息

Posted

技术标签:

【中文标题】如何使用节点 js 控制台拒绝邮递员中的解析消息【英文标题】:How to console reject resolve message in postman using node js 【发布时间】:2021-07-15 06:52:19 【问题描述】:

如何在多个函数中执行解析。

因为我有多个 promise 函数,每个函数都包含解析消息,但不知道如何在邮递员上打印它

如果有一个带有promise的函数,那么解析消息很容易被执行,但是如果有函数的函数那怎么可能呢?

这是否可以将解决或拒绝消息从一个函数返回到另一个函数?

我写信是为了在我的任务完成时在邮递员中传递解决消息,或者在出现错误时拒绝消息

但是在写完return之后,它仍然没有返回解决消息或邮递员内部的拒绝消息

知道如何解决这个问题吗?

async function readFile(filePath) 

async function getAllFile(filePath) 
const paths = await readFile(filePath);

async function filterFiles(filePath) 
const paths = await getAllFile(filePath);


function addDocument(data)
return new Promise((resolve, reject) => 
Document.create(
        name: data.name,
      ,
    ).then(function (filePath) 
        filterFiles(filePath);
        let msg = "Document created Succesfully";
        return resolve(msg);
      )
      .catch(function (err) 
        return reject("Can't be updated please try again :) " + err);
      );
);

function updateDoc(data)
return new Promise((resolve, reject) => 
Document.update(
      name: data.name,
      
      where: 
        product_id: data,
      ,
    )
).then(function (filePath) 
        getAllFile(filePath);
        let msg = "Updated Successfully";
        return resolve(msg);
      )
      .catch(function (err) 
        return reject("Can't be updated please try again :) " + err);
      );

function findDoc(data)
return new Promise((resolve, reject) => 
Document.findAll(
      
      raw:true,
      ,
      
      name: data.name,
      
      where: 
        product_id: data,
      ,
    )
).then(function (product) 
        if(product.length===0)
        addDocument(product);
      let msg="task completed";
      return resolve(msg,product);
        else
        return resolve(updateDoc(product));
        
      )
      .catch(function (err) 
        return reject("Can't be updated please try again :) " + err);
      );

function findDoc(data)
return new Promise((resolve, reject) => 
Document.findAll(
      where: 
        product_id: data.id,
      ,
    )
).then(function (product) 
      findDoc(product);
      let msg="task completed";
      return resolve(msg,product);
      )
      .catch(function (err) 
        return reject("Can't be updated please try again :) " + err);
      );


如何在邮递员中获得解决消息

【问题讨论】:

您可以在以下帖子中找到答案。这是与那些类似的问题。 ***.com/questions/67156313/…***.com/questions/67192232/… 【参考方案1】:

我很难测试您的代码,但很有可能在响应对象中返回解析、拒绝消息。

例如,如果您想通过 3 个 promise 传递拒绝消息并返回您需要使用 try, catch 块的响应,您可以查看以下示例:

// index.js
const express = require('express')
const app = express()
const port = 3000


const responder1 = (error, message) => 
    return new Promise((resolve, reject) => 
        if (error) 
            reject(error);
            return;
        
        resolve(message);
    );
;
const responder2 = (error, message) => 
    return new Promise((resolve, reject) => 
        if (error) 
            reject(error);
            return;
        
        resolve(message);
    );
;
const responder3 = (error, message) => 
    return new Promise((resolve, reject) => 
        if (error) 
            reject(error);
            return;
        
        resolve(message);
    );
;


app.use('/', async (req, res) => 

    let result;
    try 
        const error = new Error("This is a error message.");
        result = await responder1(error, null);
     catch (error1) 
        try 
            await responder2(error1, null);
         catch (error2) 
            try 
                await responder3(error2, null)
             catch (error3) 
                res.send(
                    success: 0,
                    message: error3.message
                );
                return;
            
        
    

    res.send(
        success: 0,
        message: result
    );
);



app.listen(port, () => 
    console.log(`Example app listening at http://localhost:$port`)
)

如果你想传递解析消息:

const express = require('express')
const app = express()
const port = 3000


const responder1 = (error, message) => 
    return new Promise((resolve, reject) => 
        if (error) 
            reject(error);
            return;
        
        resolve(message);
    );
;
const responder2 = (error, message) => 
    return new Promise((resolve, reject) => 
        if (error) 
            reject(error);
            return;
        
        resolve(message);
    );
;
const responder3 = (error, message) => 
    return new Promise((resolve, reject) => 
        if (error) 
            reject(error);
            return;
        
        resolve(message);
    );
;


app.use('/', async (req, res) => 

    let result = await responder3(null, await responder2(null, await responder1(null, "This is a test message.")));

    res.send(
        success: 0,
        message: result
    );
);



app.listen(port, () => 
    console.log(`Example app listening at http://localhost:$port`)
)

【讨论】:

以上是关于如何使用节点 js 控制台拒绝邮递员中的解析消息的主要内容,如果未能解决你的问题,请参考以下文章

Angular js1中的403禁止Rest API(节点js)

如何将主机名解析为节点js中的IP地址

socket.io 未定义并拒绝连接

是否最好使用HTTP标头重定向到不同的页面/文档,或者合并动态消息以通知用户拒绝访问?

如何在节点js中向azure服务总线队列发送消息时将内容类型指定为application/json?

如何用Dom4j获取CDATA结点内容