У меня есть этот скрипт 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, не нарушая, так сказать, передовой опыт?