javascript - LoopBack操作钩子(Hook)使用多种模型

标签 javascript loopbackjs

我有一个关于 LoopBack 操作钩子(Hook)的问题。

在所说的帮助下here ,每当触发我的 Company 模型的“保存后”事件时,我都会尝试以编程方式创建一个 Privilege 对象。这是为了在保存对象后自动创建对象。

Please note that I've simplified my case to make it simple but I will actually create several objects after the creation of a Company.

我在我的 common/models/ 文件夹中创建了一个脚本,其中包含以下代码:

module.exports = function (Company) {
    Company.observe('after save', function createObjectsForNewClient(ctx, next) {
    if (ctx.instance) {
        log('A new Company has been created. Shall create a Privilege for it.');

        Privilege.create(
            {...},
            function (err, obj) {
                if(err)
                    console.error(err);

                if(obj)
                    console.lof(obj);
                }
            );
        }
    }
}

这样,钩子(Hook)就会被正确触发,但 LoopBack 会停止并出现异常:

TypeError: Cannot read property 'Privilege' of undefined

我认为这个模型可以从某些loopback/javascript/almost-magic范围内的某个地方获得。问题是,我还尝试在 module.exports = function (Company, Privilege) {... block 中添加 Privilege 模型,但似乎没有接受列出函数中要使用的无限数量的模型... 您还应该注意,我已将模型创建到 common/models/ 文件夹中的 JSON 文件中,但没有针对这些模型的其他 JS 脚本,因为 LoopBack 似乎会自动处理导出。这会对它们无法按我想要的方式访问这一事实产生影响吗?

我可能在某个地方做错了什么,但我想做的事情似乎相当简单。有人有想法吗?

最佳答案

其他模型可通过Model.app.models访问。

我通常在前几行定义我的远程方法或 Hook 所需的所有模型,例如:

module.exports = function (Company) {
    Company.observe('after save', function createObjectsForNewClient(ctx, next) {
        const Privilege = Company.app.models.Privilege,
              OtherModel = Company.app.models.OtherModel;
        // the rest of your operation hook

请注意,您必须对每个方法执行此操作。这不起作用,因为模型不会在编译时引导:

module.exports = function (Company) {
    // won't work
    const OtherModel = Company.app.models.OtherModel;

关于javascript - LoopBack操作钩子(Hook)使用多种模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46369959/

相关文章:

javascript - 解决带有嵌套 promise 的对象的美丽方法?

javascript - Loopback hasOne 和 hasMany 的模型相同

javascript - Loopback/Strongloop 失败,ssh2 函数回调错误 : write ECONNABORTED

javascript - 工作线程中的 window.alert

javascript - 向 mailjet 发送 ajax 请求时无法消除多源错误

javascript - 为什么我的 Jasmine 规范是 'No specs found'

node.js - Loopback.js 应用程序模型的可视化

node.js - 没有要包装的原始功能链

javascript - 如何使用 Javascript 停止页面刷新

javascript - 如何将js变量与html表单链接并发送到PHP文件