# \[kianba 5.1.1\] How to injectVars in node controller?

**URL:** <https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186>\
**Category:** Kibana\
**Created:** [February 7, 2017, 9:05am UTC](https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186 "2017-02-07T09:05:49Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![whoami](https://avatars.discourse-cdn.com/v4/letter/w/a9a28c/32.png) [@whoami](https://discuss.elastic.co/u/whoami)\
**Post date:** [February 7, 2017, 9:05am UTC](https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186/1 "2017-02-07T09:05:49Z")

</div>

kibana version: 5.1.1  
question:

1. how to injectVars in node controller?  
or  
is there some way that I can pass value from node-backend route to chrome ui  
or  
any way that i can injectVars from one app to all apps?

---

<div class="post-metadata">

**Author:** ![whoami](https://avatars.discourse-cdn.com/v4/letter/w/a9a28c/32.png) [@whoami](https://discuss.elastic.co/u/whoami)\
**Post date:** [February 7, 2017, 11:23am UTC](https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186/2 "2017-02-07T11:23:58Z")

</div>

is there anyone who can give me some help? thanks very much

---

<div class="post-metadata">

**Author:** ![tsullivan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsullivan/32/31077_2.png) [@tsullivan](https://discuss.elastic.co/u/tsullivan)\
**Post date:** [February 13, 2017, 11:55pm UTC](https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186/3 "2017-02-13T23:55:42Z")

</div>

Hi whoami,

I'm not sure what you mean about 'injectVars in node controller'. There are a lot of ways to have shared variables in node, such as using a file for constants, or using config settings.

As for the second part, "injectVars from one app to all apps", you can use `injectDefaultVars` for that. That gives you the ability to share variables created in your plugin's index.js throughout Angular modules of any plugin.

Quick example:

```auto
export default function (kibana) {
  return new kibana.Plugin({
    id: 'myplugin',
    publicDir: resolve(__dirname, 'public'),
    uiExports: {
      app: {
        title: 'My Plugin',
        injectVars(server) {
          const config = server.config();
          // visible to `myplugin`
          return {
            something: config.get('myplugin.something')
          };
        },
      },
      injectDefaultVars(server) {
        const config = server.config();
        // visible to any plugin
        return {
          somethingelse: config.get('myplugin.somethingelse')
        };
      }
    }
...

```

---

<div class="post-metadata">

**Author:** ![whoami](https://avatars.discourse-cdn.com/v4/letter/w/a9a28c/32.png) [@whoami](https://discuss.elastic.co/u/whoami)\
**Post date:** [February 17, 2017, 5:59am UTC](https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186/4 "2017-02-17T05:59:24Z")

</div>

my case is that the value I wanna injected as default come from other plugin abc

injectDefaultVars(server) {  
const v = server.plugins.abc.value;  
// visible to any plugin  
return {  
somethingelse: v  
};  
}

---

<div class="post-metadata">

**Author:** ![tsullivan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsullivan/32/31077_2.png) [@tsullivan](https://discuss.elastic.co/u/tsullivan)\
**Post date:** [February 17, 2017, 4:44pm UTC](https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186/5 "2017-02-17T16:44:22Z")

</div>

You can have the other plugin expose an object on the server object, and access that object from other plugins. You probably don't want to do this from a controller. A controller's handler should only be responsible for handling a single HTTP request. Instead handle it in the `init` of the plugin, so the objects get set up on Kibana startup:

In pluginone/index.js

```auto
    ...
    init: function (server, options) {
      const helpers = {
        sayHello() {
          console.log('hello');
        }
      };
      server.expose('helpers', helpers);
      this.status.green('ready to go');
    }
    ...

```

In plugintwo/index.js

```auto
export default function (kibana) {
  return new kibana.Plugin({
    require: ['pluginone'],
    ...
    init: function (server, options) {
      const { pluginone } = server.plugins;
      pluginone.helpers.sayHello();
      this.status.green('also ready to go');
    }
  });
};

```

Note there is no official support or API for 3rd party plugin. Until there is, these things could break from one release to another.

---

<div class="post-metadata">

**Author:** ![whoami](https://avatars.discourse-cdn.com/v4/letter/w/a9a28c/32.png) [@whoami](https://discuss.elastic.co/u/whoami)\
**Post date:** [February 20, 2017, 5:22am UTC](https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186/6 "2017-02-20T05:22:09Z")

</div>

yeah, i know that. the question is that I have to expose it in node controller. the var to be exposed is in request.session

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [March 20, 2017, 5:22am UTC](https://discuss.elastic.co/t/kianba-5-1-1-how-to-injectvars-in-node-controller/74186/7 "2017-03-20T05:22:43Z")

</div>

Closed on March 20, 2017, 5:22am UTC

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
