Это безумие - сначала использовать статическое соединение с базой данных :) Идея вашего дизайнера была очень плохой в отношении статического подхода. Я думаю, что архитектура NTiear была хорошим способом начать с этого. Возможно, в будущем вашей новой проблемой станет масштабируемость вашей системы БД. Возможно, вы используете вертикальное масштабирование. Если это правильно, вы должны применить распределенный подход к системе БД, например, репликацию и разделение. Также решение nosql может иметь другой вариант. Я искал эту тему в прошлом году, и я написал документ, который вы можете увидеть на medium
И еще один вопрос о monolotihc vs. microservice. Вы можете найти много статей на средних и т. Д. Вот один из из них .
Кроме того, я опубликовал пример проекта на github о N-Tier-Architecture-with-Generic-Repository - Dependency-Injection-And-Ninject
, который вы можете изучить
Удачи;)
При использовании Прототипа это легко. Во-первых, можно использовать toQueryParams метод на Строковом объекте получить объект JavaScript с парами имя/значение для каждого параметра.
Во-вторых, можно использовать Форму. Метод Elements.setValue (кажется, не документируется) переводить каждое значение строки запроса в фактическое состояние ввода формы (например, проверять флажок, когда значение строки запроса "включено"). Используя метод имени value=value только работает на текст и выбор (один, не многие) исходные данные. Используя Прототип метод добавляет поддержку флажка, и выберите (несколько) исходные данные.
Что касается простой функции для заполнения, что Вы имеете это работает хорошо, и она не является сложной.
function populateForm(queryString) {
var params = queryString.toQueryParams();
Object.keys(params).each(function(key) {
Form.Element.setValue($("someform")[key], params[key]);
});
}
Это использует Object.keys и каждого методы, чтобы выполнить итерации по каждому параметру строки запроса и установить вход формы соответствия (использующий входной атрибут имени) к совпадающему значению в объекте параметрических усилителей запроса.
Править: Обратите внимание, что у Вас не должно быть идентификационных атрибутов на Ваших элементах формы для этого решения работать.
Попробуйте это:
Event.observe(window, 'load', function() {
var loc = window.location.search.substr(1).split('&');
loc.each(function(param) {
param = param.split('=');
key = param[0];
val = param[1];
$(key).value = val;
});
});
Вышеупомянутый код предполагает присвоение значений идентификаторов, а также имен к каждому элементу формы. Это берет параметры в форме:
?key=value&key=value
или
?option1=1&option2=2
Если Вы хотите сохранить его в просто названиях элементов, то попробуйте вместо вышеупомянутого:
Event.observe(window, 'load', function() {
var loc = window.location.search.substr(1).split('&');
loc.each(function(param) {
param = param.split('=');
key = param[0].split('_');
type = key[0];
key = key[1];
val = param[1];
$$(type + '[name="' + key + '"]').each(function(ele) {
ele.value = val;
});
});
Этот код берет параметры в форме:
?type_key=value&type_key=value
или
?select_option1=1&select_option2=2
Вы сказали, что уже проходите элементы и устанавливаете значения. Однако, возможно, это более чисто это, что Вы имеете?
function setFormSelectValues(form, dataset) {
var sel = form.getElementsByTagName("select");
dataset.replace(/([^=&]+)=([^&]*)/g, function(match, name, value){
for (var i = 0; i < sel.length; ++i) {
if (sel[i].name == name) {
sel[i].value = value;
}
}
});
}
Вы могли затем адаптировать это к больше, чем просто избранным элементам в случае необходимости.
Три строки кода в prototype.js:
$H(query.toQueryParams()).each(function(pair) {
$("form")[pair.key].setValue(pair.value);
});