Как вызвать событие в JavaScript?

Хотя я не уверен в значении 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 позволяет вам проверять свойства определения поля схемы, если процесс преобразования зависит на это никак.

491
задан Brian Tompsett - 汤莱恩 19 August 2019 в 11:20
поделиться

1 ответ

Вы можете использовать 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);
}
440
ответ дан 22 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: