【问题标题】:Run a Node endpoint for every item in array?为数组中的每个项目运行一个节点端点?
【发布时间】:2026-01-24 17:15:02
【问题描述】:

我正在使用 ExpressJs、NodeJs、AngularJs。

假设我有一个数组,其中包含几个对象,这些对象代表杂货店帐户以及银行欠他们的金额。

[{
account: 1, 
amount: 2.33
}, 
{
account: 2, 
amount: 5.99
}, 
{
account: 3, 
amount: 6.00
}];

这个数组可以改变,数组中可以有 1 个对象或 10 个对象,这取决于那周银行欠哪些杂货店。

对于每个对象,我需要运行一个节点端点来转移这笔钱。 例如:

const app = module.exports = express();
app.post('/transfer', (req, res) => { //Code goes in here };

如何根据数组中对象的数量运行 app.post('/transfer') n 次?

我还是个菜鸟,所以我很难说出我的问题。 为了简单起见:为数组中的每个项目运行一个函数。

2 项 = 运行函数两次。 (异步)

【问题讨论】:

    标签: javascript angularjs arrays node.js express


    【解决方案1】:

    您可以在请求正文中传递该数组并调用一个辅助函数来执行数组中每个项目的传输:

    app.post('/transfer', (req, res) => {
      const accounts = req.body;
    
      accounts.forEach((account) => transfer(account));
    };
    
    function transfer(account) {
      // perform the transfer for a single account
    }
    

    那个辅助函数可以是异步的,返回一个promise,你可以使用Promise.all来解决所有的传输:

    app.post('/transfer', (req, res) => {
    
      const accounts = req.body;
      const transferPromises = accounts.map((account) => transfer(account));
    
      Promise.all(transferPromises).then(...).catch(...);
    };
    
    function transfer(account) {
      // returns a promise of transfer for a single account
    }
    

    【讨论】:

    • 天哪,非常感谢!我忘记了高阶函数有多么有用。老实说,我不认为这是可能的,但它就像一种魅力。谢谢!
    • 很高兴为您提供帮助! :)
    最近更新 更多