Loopback beforeRemote for PUT请求

问题描述 投票:4回答:4

使用Loopback框架,我想在编辑Item之前执行一些操作,因此我尝试这个但无法将其绑定到更新钩子。

  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");
});
node.js loopbackjs strongloop
4个回答
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();
});

3
投票

我知道自从这篇文章被打开以来已经过了两年,但是如果任何一个团体都有相同的问题,如果你使用端点your_model/{id},那么afterRemote钩子就是replaceById。如果您需要知道在远程钩子中触发了哪个方法,请使用以下代码:

yourModel.beforeRemote('**', function(ctx, unused, next) {
    console.info('Method name: ', ctx.method.name);
    next();
});

1
投票

很抱歉碰到旧问题,但对于那些仍在搜索的人来说。

'prototype.updateAttributes'可以用作更新请求的远程钩子。和@jakerella,没有名为'save'的远程钩子,我自己尝试过,但没有工作。


1
投票

来到这里寻找另一件事,猜测它会对某人有所帮助。对于远程model/:id补丁方法之前,你必须使用“prototype.patchAttributes”。

© www.soinside.com 2019 - 2024. All rights reserved.