Почему эта функция app.locals в кнопке не работает в моем шаблоне EJS? - PullRequest
0 голосов
/ 24 июня 2018

У меня есть этот скрипт agents.js следующим образом

var express = require('express');
var router = express.Router();
var app = express(); // is it wise to call express like this twice?

router.get('/', function(req, res, next) {
  var query = "role=agent";
  get('employees').then(function(data) {
    res.render("agents", {
        rows: result,
        user: req.user
    });          
  }, function(error) {
    res.send(JSON.stringify(error));
  });
});        

/// how can I expose this function to the application properly?
app.locals.add2Users = function(item) {
  console.log("ADDING SOMEONE");

  api.create(item, 'employees').then(function(data) {
    console.log("Nice");
  }, function(error) {
    console.log("Error");
  });
};

module.exports = router;

И простой шаблон agents.ejs

<% for(var i=0; i < rows.length; i++) { %>
    <tr>                                  
        <td>
            <%= rows[i].name %>
        </td>
        <td>
            <%= rows[i].email %>
        </td>
        <td>
            <% if (rows[i].toAdd) { %>
                <button type="button" class="btn btn-info btn-outline btn-circle btn-lg m-r-5" onClick="add2Users(rows[i])">
                    <i class="ti-magnet"></i>
                </button>
            <% } %>
        </td>
    </tr>
<% } %>

Цель состоит в том, чтобы создать пользователя в какой-либо внутренней базе данных при нажатии кнопки в шаблоне, вызвав функцию add2Users. Я прочитал, что вы можете представить функцию в шаблоне EJS, добавив ее в app.locals, однако я получаю ошибку add2Users is not defined. Что я делаю не так, и как лучше всего представить функцию скрипта в шаблоне EJS, не нарушая, так сказать, передовой опыт?

1 Ответ

0 голосов
/ 26 июня 2018

Вместо того, чтобы использовать app.locals, я закончил тем, что создал конечную точку /addUser/{param} и вызывал конечную точку от клиента по нажатию кнопки.

...