Хотя я не уверен в значении req.body.starttime
, я уверен, что вы ищете функцию объектов Schema pre()
, которая является частью Mongoose Middleware и позволяет определение функций обратного вызова, которые должны быть выполнены до сохранения данных. Вероятно, что-то вроде этого делает желаемое задание:
var RunSchema = new Schema({
[...]
starttime: {
type: Date,
default: Date.now
}
});
RunSchema.pre('save', function(next) {
this.starttime = new Date();
next();
});
Обратите внимание, что функция обратного вызова для события save
вызывается каждый раз перед созданием или обновлением записи. Таким образом, это, например, способ явно установить «измененную» временную метку.
EDIT:
Благодаря вашему комментарию я теперь лучше понял, чего вы хотите достичь. Если вы хотите изменить данные до того, как они будут назначены и сохранены в записи, вы можете легко использовать свойство set
схемы:
// defining set within the schema
var RunSchema = new Schema({
[...]
starttime: {
type: Date,
default: Date.now,
set: util.getDate
}
});
Предполагая, что объект util
находится в пределах области действия (требуется или что-то еще) ваша текущая реализация соответствует сигнатуре для свойства set
:
function set(val, schemaType)
Необязательный параметр schemaType
позволяет вам проверять свойства определения поля схемы, если процесс преобразования зависит на это никак.
Вы можете использовать fireEvent в IE 8 или ниже и W3C dispatchEvent в большинстве других браузеров. Чтобы создать событие, которое вы хотите активировать, вы можете использовать createEvent
или createEventObject
в зависимости от браузера.
Вот поясняющий фрагмент кода (из прототипа), который запускает событие dataavailable
в элементе
:
var event; // The custom event that will be created
if(document.createEvent){
event = document.createEvent("HTMLEvents");
event.initEvent("dataavailable", true, true);
event.eventName = "dataavailable";
element.dispatchEvent(event);
} else {
event = document.createEventObject();
event.eventName = "dataavailable";
event.eventType = "dataavailable";
element.fireEvent("on" + event.eventType, event);
}