Могу ли я манипулировать данными, которые будут сохранены в методе beforeRemote в loopback? - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь использовать beforeRemote ("create", fn).Мне нужно изменить несколько полей, прежде чем я продолжу сохранять полученные данные.

Я пытался манипулировать данными в ctx.args, но безуспешно.Сохраненные данные не включают сделанные мной изменения.

Я использую loopback 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 голосов
/ 03 декабря 2018

Обратите внимание, что ctx.args содержит все аргументы.В своем фрагменте кода вы устанавливаете значение для именованного аргумента с именем tags.Встроенный метод create не принимает аргумент tags, поэтому LoopBack (strong-remoting) игнорирует эти дополнительные данные.

Чтобы изменить данные модели (значения свойств), вам необходимозамените 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;
});
0 голосов
/ 03 декабря 2018

После нескольких тестов: с помощью MySQL коннектора, данные для создания доступны в ctx.req.body.

Вы можете изменить его, прежде чем данные будут сохранены в базе данных.

Но это не такне работает с разъемом mongodb.С помощью этих соединителей созданные значения доступны в ctx.args.data, и вы можете изменять их.

Надеюсь, это поможет,

...