Node.js截取Promise并精心设计Response

拉斐

我现在开始使用Node.js + Express,目前正在编写HTTP API结构。

我有一个使用以下模式公开一些方法的控制器:my_controller.js

'use strict';
var AppApiFactory = function (express, appService) {

    var api = express.app;

    /* Get all apps ordered by Name Ascending */
    function getAllApps(request, response) {
        appService.getApps(request.query.$expand).then(function (apps) {
            response.status(200).send(apps);
            })
            .catch(function (err) {
                console.error('Error occurred in Apps Api: ' + err);
                response.status(500).send("" + err);
        });
    }

    /* Routing */
    api.get('/api/v1/apps', getAllApps);

    return {
        getAllApps: getAllApps,
    };
};

module.exports = AppApiFactory;

appService是我的ORM返回的一个简单方法,其中包括一个Promise和一个对象数组。现在,由于我必须实现一些ISO / RFC标准,因此必须将响应转换为更复杂的结构,例如:

{
   "data":[my promise array],
   "count":10,
   "type":"xmlns:mytype..."
}

如何截获ORM返回的Promise,修改内容并再次从Express Controller返回另一个Promise?这可能吗?

也许这是一个愚蠢的问题,但是我仍然没有掌握诺言背后的概念。我来自.NET / Java,JavaScript(client)世界,因此我对JavaScript服务器端有些陌生。

伊恩·克拉克(Ian Clark)

无需进一步了解此特定上下文,.then()就可以链接Promise的语句,其中一个.then()调用中的“ thenable”流到下一个调用中。

在您的情况下,它可能看起来像这样:

function getAllApps() {
  return appService
    .getApps(request.query.$expand)
    .then(function(apps) {
      response.status(200).send(apps);
      return {
        data: apps,
        count: apps.length,
        type: "xmlns:mytype..."
      }
    })
    .catch(...);
}

getAllApps()然后,调用将返回一个Promise,该Promise从原始响应中获取appService.getApps()并转换为您期望的格式。

getAllApps.then(function(response) {
  console.log(response);
});

// {data: [...], length: 10, type: "..."}

查看该MDN文章Promise.prototype.then()更多

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js截取Promise并精心设计Response

来自分类Dev

Delphi-创建精心设计的插件

来自分类Dev

精心设计的开源程序,可轻松播放scala

来自分类Dev

尽管网址经过精心设计,但“未找到页面”

来自分类Dev

Node.js与Promise并行

来自分类Dev

精心设计CSS选择器,以查找具有相同名称的多个元素的唯一值

来自分类Dev

Node JS App更好的设计和分离

来自分类常见问题

Node.js-从promise.then()内部返回

来自分类Dev

Node JS Async Promise。所有问题

来自分类Dev

JavaScript Promise和Node.js

来自分类Dev

Node.js-从promise.then()内部返回

来自分类Dev

解决promise node.js数组

来自分类Dev

Promise 在 Node JS 中不起作用

来自分类Dev

Node.js HTTP response streams

来自分类Dev

我的项目包含每个页面的页面。包含布局显示精心设计的包含布局。但所有者页面不显示相同的视图

来自分类Dev

node.js冲突:/ sbin / node与/ usr / bin / node

来自分类Dev

Node.js node_modules?

来自分类Dev

Node.js应用程序中的域驱动设计

来自分类Dev

Node.js API设计和路由处理

来自分类Dev

在Node JS / Express / Mongoose中使用IF / ELSE的设计模式

来自分类Dev

Node.js / socket.io设计混乱

来自分类Dev

Node js写入文件

来自分类Dev

基本Node JS配置

来自分类Dev

Node.js继承

来自分类Dev

Node.js集群

来自分类Dev

Node JS应用托管

来自分类Dev

GQL与node.js

来自分类Dev

Node js抓取失败

来自分类Dev

Baucis + Node.js