我正在构建一个使用Sequelize与数据库进行交互的rest api。查询如下:
function read_category(req, res) {
Category.findById(req.params.categoryId, {rejectOnEmpty: true}).then(category => {
res.json(category);
}).catch(Sequelize.EmptyResultError, function () {
res.status(404).json({message: 'No category found'});
}
).catch(function (err) {
res.send(err);
}
);
}
现在,我希望从Sequelize返回的类别对象然后返回给用户,以将link
包含到资源中。我可以做到:
category.dataValues.link = config.base_url + 'categories/' + category.dataValues.id;
这将导致:
{
"id": 1,
"name": "TestCategory 1",
"position": 1,
"createdAt": "2018-08-19T11:42:09.000Z",
"updatedAt": "2018-08-19T11:42:09.000Z",
"link": "http://localhost:3000/categories/1"
}
由于我的路由数量超过了此路由,所以我想知道是否存在一种动态的方法来将link属性添加到每个类别。我不想将其保存在数据库中,因为基本URL可能有所不同。
谢谢!
答案 0 :(得分:1)
更好的方法是创建一个getter
方法:
const Category = sequelize.define( 'category' , {
....
your_fields
....
},
{
getterMethods:{
link() {
return config.base_url + 'categories/' + this.id;
}
}
});
module.exports = Category;
然后
Category.findAll(...).then(categories => {
// Now there is no need to append data manually , it will added each time when you query
console.log(categories); // <-- Check the output
})