Обновить массив объектов из цикла - PullRequest
0 голосов
/ 06 января 2020

Я хочу от l oop до orderArray и для каждого order до find_one_and_update документа в пн go. Все хорошо .

Проблема в том, что я пытаюсь снова выполнить l oop через itemArray, и для каждого объекта item вставить его в массив product:

for order_dico in response['orderArray']:
    order = order_dico['order']                        
    db.Order.find_one_and_update(
        {"orderId":order['orderID']},
        {
            "$set":{
                "orderId":order['orderID'],
                "product":
                    [
                        ######### ######### ######### 
                        ######### here is the error
                        ######### ######### ######### 
                        for item in order['itemArray']:
                            {
                                "prodId":item['item']['sku'],
                                "quantity":item['item']['quantity'],
                                "title":item['item']['title'],
                                "pic":item['item']['thumbnailURL'],
                                "price":item['item']['price']
                            }
                    ]
                }
            }
        )

Я получил эту ошибку:

invalid syntax (<unknown>, line 57)

, и это order объект:

{
    order:{
        orderID: 1234,
        itemArray: [
                      item:{
                          itemID: 709475209,
                          sku: "1004",
                          ....
                      }
                   ]
          }
}

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ

Решение: сначала создайте пустой массив и добавьте pu sh объекты внутри l oop

 for order_dico in response['orderArray']:
        order = order_dico['order']  
        product=[]
        for item in order['itemArray']: 
            product.append({
                "prodId":item['item']['sku'],
                "quantity":item['item']['quantity'],
                "title":item['item']['title'],
                "pic":item['item']['thumbnailURL'],
                "price":item['item']['price']
            })

, а затем добавьте полученный массив в $set:

"$set":{      
         ...
         "product":product
}
...