loopback возвращает неизмененный документ при использовании updateAttributes () в расширенной модели пользователя - PullRequest
0 голосов
/ 24 апреля 2018

вызов updateAttributes в моей расширенной пользовательской модели 'user' успешно выполняется, возвращает обновленный документ, обновляет базу данных, но если я запрашиваю тот же самый документ, он остается неизменным: (вызывается удаленным методом)

models.user.findById(userId, function (err, userInstance) {

    console.log(userInstance)

    let newAttributes = {
        firstName:"Test"
    }

    userInstance.updateAttributes(newAttributes, function (err, newInstance) {

        console.log(newInstance)

        models.user.findById(userId, function (err, notUpdatedUser) {

        console.log(notUpdatedUser)
        });
    });
});
  • первый журнал печатает моего пользователя с firstName: 'Original'

  • второй журнал печатает моего правильно обновленного пользователя с firstName 'Test'

  • третий журнал печатается так же, как первый.

Кроме того, база данных изменяется правильно! Когда я проверяю свои записи в моем источнике данных, атрибуты updateAttributes отражаются правильно, и в конце концов я понятия не имею, откуда поступают старые данные.

Любые намеки, что может быть основной проблемой здесь? Я подозреваю, что расширенная модель пользователя, но некуда начать копать

1 Ответ

0 голосов
/ 30 апреля 2018

Если вы используете loopback3 (не уверен насчет loopback2), это поведение зависит от опции updateOnLoad.Вы можете найти некоторую информацию здесь: https://loopback.io/doc/en/lb3/Operation-hooks.html

По умолчанию create и updateAttributes не применяют обновления базы данных к экземпляру модели, возвращенному в обратный вызов, поэтому любые изменения, сделанные «загруженными» перехватчиками, отбрасываются,Чтобы изменить это поведение, установите для каждой модели параметр updateOnLoad: true.

...