我正在使用 sails-hook-sequelize 在我的 sails 应用程序中将sequelize 加载为 ORM。但是,我的 Controller 和策略设置(即仅创建它们的方法)取决于模型。我需要在运行 Controller 和策略 Hook 之前运行 sails-hook-sequelize 可安装 Hook (目前它是在之后运行的,并且 Controller /策略无法加载)。我怎样才能做到这一点?
提前致谢。
编辑:这里有一些代码来说明我想要完成的任务:
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 类采用模型参数。然而,当这个钩子(Hook)运行时,模型还不存在,因为它们是由第三方钩子(Hook)定义的(使用sequelize)。
最佳答案
目前无法在 Sails 中的核心钩子(Hook)之前运行第三方钩子(Hook)。
我经常看到这样的问题,这些问题来自于试图创建类似 Wordpress 的平台的人,他们假设对于最终用户创建的每个新“实体类型”(即博客、文章、评论)他们需要一个新模型。另一种方法是创建一个 Entity
模型,其中的 contents
属性是与 Content
或 EntityAttribute
的关联模型或多或少只是一个键/值存储。然后,您可以使用通配符路由让 EntityController
操作加载正确类型的实体。
关于javascript - 在 native 钩子(Hook)之前加载可安装的钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37072494/