json - 如何将数据库对象序列化/表示为 Node 中 API 返回的 JSON

标签 json node.js api express sequelize.js

我正在使用 express.jssequelize.js 构建 API。一旦我使用 sequelize 从数据库中检索到一个对象,我想

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

在我将其作为 JSON 从 API 返回之前。

类似于这些 Rails 库的作用:

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

关于json - 如何将数据库对象序列化/表示为 Node 中 API 返回的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978056/

相关文章:

json - 从由 jq 中的属性键入的对象流创建对象

java - JAX-RS:如何在发送响应之前拦截 json 消息体?

node.js - 获取错误 : invalid json response body

node.js - nodejs 脚本每 6 小时执行一次

javascript - 等待所有响应,然后调用函数

node.js - Twitter API POST 媒体/上传(分块)错误 "Not found"

javascript - 使用 jquery 解析 Json - 未获取值

php - 如何在mysql中获取多条记录并将其存储到json数组中

javascript - 导出默认路由; NodeJS 中的语法错误

reactjs - 如果react js axios中没有可用数据,如何显示 "no data available"消息?