MongoDB конвертировать массив объектов в один объект

Есть 2 вещи, которые не очень хороши в этом подходе к проблеме. 1) Вы используете якорный тег для выбора флажка. 2) Вы используете GET-вызов для переключения на ваших маршрутах, где он должен быть PUT или POST.

Если вы не хотите использовать Javascript и хотите использовать только python и HTML, я бы рекомендовал использовать ваш HTML-форму. WTForms - инструмент хорошей формы для фляжки, который должен помочь вам в этом. Когда вы отправляете форму, ваш бэкэнд (python) должен принимать POST-вызов, который обновляет идентификатор в базе данных и может перенаправлять обратно на страницу.

Если вы не хотите кнопку отправки, и вы не Не используйте javascript. Я бы рекомендовал создать прослушиватель onClick с помощью библиотеки jQuery или реагировать и отправить запрос PUT на ваш сервер, который попадает на ваш маршрут toggle_status. Таким образом, вам даже не нужно делать перенаправление, ваш интерфейс может синхронизироваться с бэкэнд при выполнении асинхронных вызовов. Вот руководство по выполнению вызовов AJAX https://www.airpair.com/js/jquery-ajax-post-tutorial

Почему вы должны использовать POST, PUT или GET? вот хороший блог, отвечая на этот вопрос: http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post

2
задан Aydus-Matthew 19 January 2019 в 16:13
поделиться

2 ответа

Вы можете использовать агрегацию ниже 3,6 и выше.

db.colname.aggregate(
 [{"$project":{
    "loop":{
      "$reduce":{
        "input":"$loop",
        "initialValue":{},
        "in":{"$mergeObjects":["$value","$this"]
        }
      }
    }
 }}]
)
0
ответ дан Veeram 19 January 2019 в 16:13
поделиться

Основываясь на ответе Вирама, приведенном выше с использованием $ mergeObjects, приведем более сжатый запрос с использованием $ project.

Запрос

db.loop.aggregate(
    [{
        "$project": {
            "loop": { $mergeObjects: "$loop" }
        }
    }]
)    

Результат

{ 
    "loop" : {
        "field1" : "1", 
        "field2" : "2", 
        "field3" : "3", 
        "field4" : "4", 
        "field5" : "5", 
        "field6" : "6"
    }
}
0
ответ дан Aydus-Matthew 19 January 2019 в 16:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: