我正在使用express.jssequelize.js构建API。使用序列化从数据库中检索到对象后,我想

  • 过滤掉对象属性(例如,检索用户,但不将用户的密码哈希呈现给返回的JSON)
  • 添加新的对象属性

  • 在从API作为JSON返回之前。

    与这些Rails库类似:
  • Roar
  • Grape Entity

  • 在 Node 中最常用的框架是什么?还是sequelize.js/express.js包含执行此操作的功能?

    更新

    好的,有一个基本示例,passport.js从数据库获取经过身份验证的用户的对象,并将其附加到req.user
    router.get('/me/data',
      passport.authenticate('bearer', { session: false }),
      function(req, res) {
        res.status(200).send(req.user);
      }
    );
    

    这将返回以下JSON响应:
    {
      "id": 24,
      "first_name": "John",
      "last_name": "Doe",
      "email": "mymail@example.com",
      "password": "8d23cb9c4827bc06bb30ac47c06af0efbdbeb575001ab7de5387da4085f7184a381335c0f04b45f4a40e5a7042d47ae1e2d29d28fd5be1d534f09ba3db04e8ca",
      "updatedAt": "2016-01-25T09:19:07.422Z",
      "createdAt": "2016-01-25T09:19:07.422Z",
      "data": null
    }
    

    但是我想返回这样的东西:
    {
      "id": 24,
      "full_name": "John Doe",
      "email": "mymail@example.com",
      "data": null
    }
    

    不仅在这种情况下,而且在任何情况下都呈现用户对象。

    最佳答案

    最简单的解决方案是在发送req.user之前对其进行编辑:

    功能

    render (user) {
        callback({
            "id": user.id,
            "full_name": user.first_name + ' ' + user.last_name,
            "email": user.email,
            "data": null
        });
    }
    
    router.get('/me/data',
      passport.authenticate('bearer', { session: false }),
      function(req, res) {
        render(req.user, function(user) {
            res.status(200).send(user);
        });
      }
    );
    

    10-05 21:02
    查看更多