skipRecordVerification не подавляет предупреждение ORM

паруса 1.2.4, ватерлиния 0.13.6, паруса-postgresql 1.0.2, npm 6.14.4, macOS 10.15.4

Моя конечная цель - подавить предупреждение, выдаваемое ватерлинией, потому что у меня есть поле, настроенное в модели парусов как «число», а в postgresql оно настроено как «bigint». Я знаю о несоответствии, но это то, что я хочу, так как я использую это поле для даты и времени в миллисекундах, я уверен, что значения не будут превышать размер 'number' (так что не нужно использовать ' bigint '). «Настоящее» поле, созданное адаптером в postgresql, не подходит для этой цели.

Все работает нормально, за исключением того, что sails выводит следующий довольно подробный журнал:

Вы видите это предупреждение, потому что в вашей базе данных есть записи, которые не соответствуют вашим моделям. Часто это является результатом изменения определения модели без переноса оставшихся данных. Но это также может быть связано с тем, что записи были добавлены или изменены в вашей базе данных откуда-то за пределами Sails / Waterline (например, phpmyadmin или другое приложение). В любом случае, чтобы отключить это предупреждение, у вас есть несколько вариантов. Прежде всего, вы можете изменить определение модели так, чтобы оно соответствовало существующим записям в вашей базе данных. Или вы можете обновить / уничтожить старые записи в своей базе данных; вручную или с помощью сценария миграции.

(Например, чтобы стереть все данные, вы можете просто использовать migrate: drop.)

Реже это предупреждение может означать ошибку в самом адаптере. Если вы считаете, что это так, обратитесь к разработчику этого адаптера, открыв вопрос, или посетите страницу http://sailsjs.com/support за помощью.

Я обнаружил, что существует опция «skipRecordVerification» с ватерлинией, и добавил «.meta ({skipRecordVerification: true})» ко всем запросам, но предупреждение по-прежнему выдается каждый раз, когда приложение обращается к БД.

Любая идея заставить его работать с «skipRecordVerification» или каким-либо другим способом подавить предупреждение?


person marxxx    schedule 29.04.2020    source источник


Ответы (1)


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

  1. установите плагин sails-hook-custom-blueprints
  2. переопределите файлы функций чертежей в папке api / blueprints, вы можете найти исходный код здесь
  3. добавьте следующий код в план после объявления

var queryOptions = parseBlueprintOptions (req);

if (queryOptions.meta)
    queryOptions.meta['skipRecordVerification'] = true;
else
    queryOptions.meta = { 'skipRecordVerification': true };

Надеюсь, это будет полезно, пока разработчики парусов не создадут глобальную опцию в настройках модели.

person OPADA-Eng    schedule 28.01.2021