Как задать значение по умолчанию для поля, которого нет в теле запроса (pymon go + fast API)? - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь создать проект. Данные поступают из внешнего API. Это дает четыре поля из девяти полей. Когда я создаю документ с использованием внешних данных, коллекция получает четыре пары ключ-значение из API, а остальные пять сохраняются как нулевые. Проблема в том, что когда я хочу обновить проект, остальные пять полей, которые в настоящее время являются нулевыми в коллекции, показывают ошибку как pymon go .errors.OperationFailure: поле selected_employees должно быть массивом, но имеет тип null в документе {_id: ObjectId ('5e8752c2fac01beb99701ee9')}. Для этого я использую настройку fastapi + mongodb. Любые предложения о том, как это реализовать?

def updateProject(UpdateDetailsObj)
 my_query = {"project_id": pid}
     UpdateDetailsObj = UpdateDetailsObj.dict(exclude_unset=True)
     UpdateDetailsObj = jsonable_encoder(UpdateDetailsObj)
     if "allocated_employees" or "skillset" in UpdateDetailsObj:
        updatedObj = db_connector.collection(Collections.PROJECTS).find_one_and_update(
            my_query,
            {
                "$push": UpdateDetailsObj
            },
            projection={"_id": False},
            return_document=ReturnDocument.AFTER
        )


----------------------------------------creating project-------------------------------------

project_object = {
        'project_id': project["project_id"],
        'project_name': project["project_name"],
        'assigned_pm': project["assigned_pm"],
        'status': project["status"],
    }

    createProject(project_object)
...