在本机挂钩

时间:2016-05-06 12:30:48

标签: javascript sails.js

我正在使用sails-hook-sequelize将sequelize加载为我的sails应用程序中的ORM。但是,我的控制器和策略设置(即仅创建其方法)取决于模型。我需要在运行控制器和策略挂钩之前运行sails-hook-sequelize可安装挂钩(目前它正在运行它并且控制器/策略无法加载)。我怎样才能做到这一点? Ť

提前致谢。

编辑:这里有一些代码来说明我想要完成的任务:

UserController.js

let Endpoint = require('../classes/Endpoint');

let endpoint = new Endpoint(User);

Object.assign(endpoint, {
    find
});

module.exports = endpoint;

function find(req, res, next) {
    User.findAll(
        {
            where: req.query,
            include: [
                {
                    model: Privilege,
                    include: [
                        {
                            model: Account,
                            where: {
                                accountPkey: {
                                    $in: AuthorizationService.accountsForPrivileges(req.tokenData.privileges, ['ADMINISTRATOR', 'OFFICE MANAGER'])
                                }
                            }
                        }
                    ]
                }
            ]
        })
        .then(users => res.ok(users))
        .catch(err => res.serverError(err));
}

基本上,我有一个默认的Endpoint类,我实例化然后添加方法。您可以看到Endpoint类采用模型参数。然而,当这个钩子运行时,模型还不存在,因为它们是由第三方钩子定义的(使用续集)。

1 个答案:

答案 0 :(得分:0)

目前无法在Sails中的核心挂钩之前运行第三方挂钩。

通常,当我看到这样的问题时,它来自正在尝试创建类似Wordpress的平台的人,并且他们假设对于最终用户创建的每个新的“实体类型”(即博客,文章,评论)他们需要一个新的模型。另一种方法是创建一个Entity模型,其contents属性是与ContentEntityAttribute模型的关联,或多或少只是一个键/值存储。然后,您可以使用通配符路由使EntityController操作加载正确类型的实体。