我正在使用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类采用模型参数。然而,当这个钩子运行时,模型还不存在,因为它们是由第三方钩子定义的(使用续集)。
答案 0 :(得分:0)
目前无法在Sails中的核心挂钩之前运行第三方挂钩。
通常,当我看到这样的问题时,它来自正在尝试创建类似Wordpress的平台的人,并且他们假设对于最终用户创建的每个新的“实体类型”(即博客,文章,评论)他们需要一个新的模型。另一种方法是创建一个Entity
模型,其contents
属性是与Content
或EntityAttribute
模型的关联,或多或少只是一个键/值存储。然后,您可以使用通配符路由使EntityController
操作加载正确类型的实体。