Запутаться о перьях js услуга против крючков - PullRequest
0 голосов
/ 01 мая 2020

Я новичок в перьях js. Пожалуйста, помогите мне понять эти биты

Итак, у меня есть эти коды (products.services. js)

function mapUserIdToData(context) {
  if (context.data && context.params.route.userId) {
    context.data.user = context.params.route.userId;
  }
}

app.use("/stores", new Stores(options, app));
const service = app.service("stores");
service.hooks(hooks);

// setup our nested routes
app.use("/users/:userId/stores", app.service("stores"));
app.service("users/:userId/stores").hooks({
    before: {
      find(context) {
        if (context.params.route.userId)
          context.params.query.user = context.params.route.userId;
      },
      create: mapUserIdToData,
      update: mapUserIdToData,
      patch: mapUserIdToData,
    },
});

И в моем модуле регистрации (register.service. js) Я назвал эти логики c, чтобы создать хранилище для нового пользователя

const users = this.app.service("users");
const user = await users.create(userData);
// save store
if (storeTitle) {
  const stores = this.app.service("stores");
  await stores.create({ user: user._id, title: storeTitle });
}

Чего я не понимаю, так это: почему строка await stores.create({ user: user._id, title: storeTitle }); также вызывает перехваты логики c в app.service("users/:userId/stores")? Я знаю, потому что он запускает функцию mapUserIdToData, которая не будет выполнена, поскольку для userId нет параметра маршрута.

Спасибо

...