Как получить доступ к параметрам записи из bodyParser с использованием moleler.js - PullRequest
0 голосов
/ 31 октября 2019

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

const ApiGateway = require("moleculer-web");
module.exports = {
name: "api",
mixins: [ApiGateway],
settings: {
    port: process.env.PORT || 3000,
    bodyParsers: {
        json: true,
        urlencoded: { extended: true }
    },
    routes: [{
        path: "/api",
        whitelist: [

            "**"
        ]
    }],

    assets: {
        folder: "public"
    }
},
};

Ниже моя служба пользователя, где яхочу получить параметры сообщения

module.exports = {
name: "users",
dependencies: ["guard"],

actions: {
    create: {
        restricted: [
            "api"
        ],

        async handler(ctx,route, req, res) {
            this.logger.info(req);
            this.logger.info("'users.create' has been called.");
            const token=await ctx.call("guard.generate",{service:"abc"});

что я хочу это

            const token=await ctx.call("guard.generate",{service:req.body.name});

вместо

            const token=await ctx.call("guard.generate",{service:"abc"});
            const verify=await ctx.call("guard.check",{token:token});
            return [token,verify,req];
        }
    },
   }

1 Ответ

0 голосов
/ 31 октября 2019

Moleculer´s Actions имеет следующую подпись: <actionName> (ctx) {// logic} или <actionName>: { handler (ctx) { // logic}}. Итак, что вам нужно сделать, это:

module.exports = {
  name: "users",

  actions: {
    welcome: {
      handler(ctx) {
        console.log(ctx.params) // Print the request params
        // Call other actions ctx.call('serviceName.actionName`, ...data...)
        return ctx.params
      }
    }
  }
}

Подробнее о действиях: https://moleculer.services/docs/0.13/actions.html

Сигнатура функции handler(ctx,route, req, res) - это перехват маршрута, который используется только в шлюзе API. Дополнительные сведения о перехватах маршрутов: https://moleculer.services/docs/0.13/moleculer-web.html#Route-hooks

Кроме того, req и res нельзя передать другим службам, поскольку эти объекты не сериализуемы.

В любом случае, вы можетерассмотрите возможность проверить видеоурок: https://www.youtube.com/watch?v=t4YR6MWrugw

Он охватывает основные понятия Moleculer и показывает, как вызывать действия

...