Я новичок в перьях 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
нет параметра маршрута.
Спасибо