如何避免Sails.js策略和控制器的多个数据库访问?

时间:2015-04-04 04:25:13

标签: node.js sails.js policy

我将角色检查纳入政策:

module.exports = function(req, res, next) {
    var postId = req.param('postId');
    var userId = req.session.user.id;

    Post.findOne({id: postId})
        .exec( function (err, post) {
            if (err) { return next(err); }

            if (!post) {
                return res.notFound('Post not found');
            }

            if (post.author !== userId) {
                return res.forbidden('Not the author');
            }

            next();
        });
};

在PostController中,我需要再次获取帖子(并可能填充一些相关数据)

update: function (req, res) {
    var postId = req.param('postId');
    Post.findOne({id: postId}).populate('tags')
        .exec( function (err, post) {
        // Update the post here

我想知道是否有一种不错的方法只用一次从DB获取帖子记录?

1 个答案:

答案 0 :(得分:1)

我会制定这项政策,以便彻底解决问题。实际查询,以便自动附加所有请求的用户条件。通过这种方法,您可以使用蓝图操作来获取所有内容。

我自己完成了这项工作,您可以查看代码https://github.com/tarlepp/Taskboard/blob/angular/backend%2Fapi%2Fservices%2FRightsGet.js#L460

我希望这会有所帮助。