#javascript #validation #couchdb
#javascript #проверка #couchdb
Вопрос:
Одна из вещей, которая теряется при переходе на CouchDB, — это возможность иметь значения по умолчанию для поля. Например, в базе данных SQL у вас может быть поле с именем, date
которое по умолчанию равно now()
. Возможно ли сделать что-то подобное в CouchDB?
Насколько я могу судить, единственный фрагмент кода, который запускается при каждой операции создания и обновления, — это validate_doc_update
метод конструкторского документа. Однако, когда мы протестировали его, создав фиктивную проверку, мы не можем заставить его работать. Вот простая функция проверки, которая пытается установить поле newDoc.foo
, но оно никогда не сохраняется.
function(newDoc, oldDoc, userCtr) {
newDoc.foo = "bar!";
}
Мы проверили, вызывается ли validate_doc_update
метод, поэтому, похоже, что если и существует способ автоматического добавления полей в документ CouchDB, то использование функции проверки — это не выход. Есть другие предложения?
Ответ №1:
Вы могли бы использовать некоторую логику представления для применения значений по умолчанию при просмотре документа через представление.
Вы могли бы применить к нему обработчик обновления после его написания (и, возможно, после последующих изменений), но для этого каждый раз требовался бы другой вызов для его вызова.
Я бы, вероятно, решил это, создав документ, который вы вставляете как объект, перед тем, как вы его вставите, и применив к нему значения по умолчанию, чтобы то, что вы записываете в CouchDB, уже было правильным.
Комментарии:
1. В последних версиях CouchDB запрещено изменять документ в представлении .
2. Спасибо за подсказку по обработчикам обновлений. Хорошо созданный обработчик обновлений может выглядеть точно так же, как обычный механизм создания и обновления документов, при этом все еще добавляя дополнительные поля, такие как дата создания. Кроме того, помещая их в функции обновления, они не запускаются снова после репликации.