Накануне Python: соблюдается ли схема при непосредственном обновлении с использованием current_app.data.driver.db [collection] .update_one ()? - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть несколько устаревших пользовательских конечных точек в моем приложении для поддержки перехода от старого API к Eve. Одна из моих пользовательских конечных точек реализует конечную точку для обновления документов в базе данных MongoDB. Коллекция, связанная с этими документами, имеет схему, определенную в settings.py, которая работает должным образом при выполнении обычной публикации. Тем не менее, когда я использую update_one() вместо прямого доступа к API, предоставленному Евой, схема не соблюдается.

Не применяется ли схема, определенная в settings.py, к самой коллекции в базе данных? Есть ли хороший способ применить эту схему к коллекции?

1 Ответ

0 голосов
/ 09 октября 2018

Нет, это не так, схема принимается во внимание в основном на этапе проверки цербера, который называется внутренним во время запроса POST.

Если вы не хотите повторять это поведение, вы можете попробовать сделать так:

from eve.utils import config
from flask import current_app as app

resource_def = app.config['DOMAIN'][resource]
schema = resource_def['schema']
validator = app.validator(schema, resource=resource)
validator.validate(document)
...