Мне скучно создавать функции для разных таблиц, потом я начал сводить все к одной функции, но я младший программист, надеюсь найти мнения о своем коде.
Это краткоНапример, с 1 таблицей, но я работаю с 123 таблицами, и пока это работает хорошо, но я надеюсь узнать ваше мнение.
Поля заголовка таблицы JSON: Tableheads.json
{
"orders": {
"fields": [
{"name": "ID"},
{"name": "Product ID"},
{"name": "Name"},
{"name": "Description"},
{"name": "Recommended Amount"},
{"name": "Minimum Amount"},
{"name": "State"},
{"name": "Created on"}]
}
}
Имя и заполнитель полей формы JSON: Tableforms.json
"orders": {
"Tfields" : [
{"name": "Product_id", "tname": "Product ID"},
{"name": "NameProduct", "tname": "Name"},
{"name": "Description", "tname": "Description"},
{"name": "quantity_order", "tname": "Recommended Quantity"},
{"name": "quantity_Min", "tname": "Minimum Quantity"}]
},
JSON с именами таблиц: TableNames.json
{
"users":"",
"alerts":"",
"orders":"",
"inventary":"",
"sales":"",
"billing":""
}
теперь в моем контроллере tables.js
var thead = require('../Helpers/Tableheads'),
var tname = require('../Helpers/TablesNames'),
var tform = require('../Helpers/Tableforms');
var db = require('../dbConfig');
exports.Genetal_table_get =function(req, res){
var Table = req.params.Tablename ;
if(tname[Table]){ //it checks if "Tablename" is in Tablenames.json
var Thead = thead[Table]; //we assign the Head values
var Tform = tform[Table].Tfields; //we assign the Form values
getTable(Table,function(rows){
return res.render('table',{table :{
name : Table,
head: Thead,
body : rows }, //all the records in the table
Tform : Tform }); // end render
}); // end getTable function
} // end if
};
function getTable(table, done) {
db.get().query('SELECT * FROM ?? ',[table] ,function(err, rows, fields) {
if (err) throw err;
done(rows);
});
}
route: tables.js
var table = require('../controller/tables');
router.get('/user/:userid/table/:Tablename/list', table.Genetal_table_get);
позже с EJS, в моей таблице макетов я просто обрабатываю значения следующим образом:
Внутри формы для добавления новых записей:
<% Tform.forEach(function(item){ %>
<input name='<%= item.name %>' type="text" class="form-control" placeholder='<%= item.tname %>' required="">
<% }); %>
внутри таблицы:
<thead>
<tr>
<% table.head.fields.forEach(function(item) { %>
<th><%= item.name %></th>
<% }); %>
</tr>
</thead>
Чтобы обработать это использование Tbody, я делаю «include» в зависимости от имени таблицы, которое сохраняется в «table.name» в render:
<tbody>
<% if(table.name == 'users'){ %>
<%- include ./ShareTable/body_users %>
<% } %>
<% if(table.name == 'orders'){ %>
<%- include ./ShareTable/body_orders %>
<% } %>
....-> many others the same
</tbody>
и для tbody я создаю файл .ejs, так как каждая таблица обрабатывает разныестолбцы, меньшим примером будет body_users.ejs, где мы используем «table.body», где сохраняются строки таблицы sql:
<% for(var i=0; i<table.body.length; i++){ %>
<tr>
<td><%= table.body[i].id %>
</td>
<td><%= table.body[i].username %>
</td>
<td><%= table.body[i].password %>
</td>
<td><%= table.body[i].email %>
</td>
<td><%= table.body[i].rol %>
</td>
<td><%= table.body[i].IsActive %>
</td>
<td><%= table.body[i].lastLogin %>
</td>
</tr>
<% } %>
Я надеюсь прочитать ваши мнения или рекомендации.