我正在使用 express.js
和 sequelize.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/