2015-12-17 82 views
2

使用Loopback框架,我想在编辑Item之前执行一些操作,因此我尝试这样做,但无法将其绑定到更新挂钩。Loopback beforeRemote for PUT请求

Item.beforeRemote("update", function(ctx,myitem,next) { 
    console.log("inside update"); 
    }); 

而是更新我与updateAttributes试过的,updateById创建,但没有工作。这种beforeRemote钩子在POST上创建效果很好,但在编辑过程中无法通过PUT获得。 我最后一个解决方案是再次检查methodString与通配符钩,但我想知道是否有任何记录,我找不到。

Item.beforeRemote("**",function(ctx,instance,next){ 
    console.log("inside update"); 
}); 
+0

你试过“* .save”作为方法名吗? – Jack

+0

*。保存是一个操作钩子我对远程钩子感兴趣 –

回答

3

相反的意见,save是一个远程钩子,而不是操作挂钩,但你想用它作为:prototype.save。相关的操作钩子将是before save。你可以在LoopBack docs page上看到这些表格。我可能会实现这个作为操作钩虽然和使用上下文的isNewInstance属性仅在更新执行的操作:

Item.observe('before save', function(ctx, next) { 
    if (ctx.isNewInstance) { 
    // do something with ctx.currentInstance 
    } 
    next(); 
}); 
+1

我想使用强大的分析多部分,我使用环回存储容器的上传方法,通过它获取相关字段。 **这些字段在操作钩子**中是不可用的,其次保存你说的是在文档中给出的,因为远程钩子明确提到它是一个自定义的远程钩子,意思是任何名称以保存结束的方法,请阅读文档:**这个远程钩子在任何名字以“save”结尾的远程方法被执行时被调用:[code] ** –

+2

@SwapnilGondkar我很感谢你的努力来帮助澄清,但我为StrongLooop工作,并且我告诉你'save '不是一个操作钩子。在保存之前有'save'和'save'之后,但是不是**'保存'本身。这是原型上的“远程钩子”。相信我,我帮助编写了文档。至于在钩子回调中不可用的字段,这并不奇怪。您可能需要使用一块中间件将字段添加到请求对象,以便通过上下文在钩子回调中使用它们。 – jakerella

1

对不起,撞到老问题,但它对于那些谁仍在寻找。

'prototype.updateAttributes'可用作更新请求的远程挂钩。 和@jakerella,没有远程钩叫'保存',我自己试过,但没有工作。