我可以在环回中操作要保存在beforeRemote方法中的数据吗?

时间:2018-12-03 06:40:29

标签: node.js loopback

我正在尝试使用beforeRemote(“ create”,fn)。在继续保存收到的数据之前,我需要更改一些字段。

我尝试操作ctx.args中的数据,但是没有运气。保存的数据不包括我所做的更改。

我正在使用回送3.23.x和mongodb数据库。有人可以告诉我如何处理数据吗?这不是遥控器之前的用途吗?

  model.beforeRemote("create", async function(ctx, instance, next) {
    console.log(ctx.args)
    ctx.args = {
      ...ctx.args,
      tags: [ "one", "two" ],
    }
    console.log(ctx.args)
    return;
  });

2 个答案:

答案 0 :(得分:2)

请注意,ctx.args包含所有参数。在代码段中,您正在为名为tags的命名参数设置值。内置的“创建”方法不接受任何tags参数,这就是LoopBack(强远程)忽略这些多余数据的原因。

要修改模型数据(属性值),您需要更改ctx.data对象。

model.beforeRemote("create", async function(ctx, instance, next) {
  console.log(ctx.args)
  ctx.arg.data = {
    ...ctx.args.data,
    tags: [ "one", "two" ],
  }
  console.log(ctx.args)
  return;
});

答案 1 :(得分:0)

经过一些测试:使用mysql连接器,可以在ctx.req.body中找到要创建的数据。

您可以在将数据保存到数据库之前对其进行修改。

但是它不适用于mongodb连接器。 使用此连接器,可以在ctx.args.data中使用创建的值,您可以对其进行修改。

希望有帮助,