Ограничить функции ловушек жизненного цикла парусов конкретными изменениями атрибутов - PullRequest
0 голосов
/ 19 октября 2018

У меня есть несколько связанных моделей, и я хотел бы обновить атрибут updatedAt (autoUpdatedAt), равный modelA, с помощью текущей отметки времени при изменении определенных атрибутов других моделей (например, modelB).До сих пор мне удавалось обновлять метку времени с помощью перехватчиков жизненного цикла Sails, но только в случае изменения атрибута любой на другие модели.

Я гуглил несколько часов, но я новичокпаруса, так что, возможно, я не подбираю правильные ключевые слова.Спасибо за любую помощь.Самый близкий ответ, который я могу найти: После обновления, как сравнить экземпляр модели с его прежним состоянием

@ myusuf говорит, что делать, но не совсем, как это сделать, и я 'Я застрял на реализации.(Я пытаюсь провести рефакторинг, основываясь на ответе @ r0hitsharma, но пока это полностью ломает мой хук жизненного цикла.)

Вот упрощенный пример:

server / api / models / ModelA.js (модель для обновления) ...

module.exports = {
    autoUpdatedAt: true,

    attributes: {
        id: {
            type: 'integer',
            autoIncrement: true,
            primaryKey: true,
            unique: true
        },
        modelBs: {
            collection: 'modelB',
            via: 'modelA'
        }
    }
}

server / api / models / ModelB.js (при изменении modelB.firstAttribute пользователем modelA.updatedAt следует заменить текущим временем) ...

module.exports = {
    attributes: {
        firstAttribute: {
            type: 'string'
        },
        secondAttribute: {
            type: 'string'
        },
        modelA: {
            model: 'modelA',
            required: true,
            notNull: true
        },
    afterUpdate:  handleModelUpdate,
    afterCreate: handleModelUpdate,
    afterDestroy: handleModelUpdate
}

function handleModelUpdate(modelA, callback) {
    ModelB.findOne({ tableA: tableA.id })
    .then(modelA => {
        return ModelA.update(this.id, { updatedAt: new Date() });
})
.catch(error => callback(error))
.then(() => callback());
}

Как ограничить функцию ловушки жизненного цикла handleModelUpdate до только firstAttribute изменениями и игнорировать secondAttribute изменения?

...