пн goose help, почему я получаю null? - PullRequest
1 голос
/ 14 июля 2020

Я пытаюсь получить item._id, потому что я получаю его как массив из req.body.items. Мне нужен каждый элемент как отдельный для pu sh его в моем новом массиве order._items.

     app.post('/orders/:userEmail/',(req,res)=>{
         let itemNew=new Item();
          let orderNew=new Order();
          let itemArray=req.body.items;
          
         async function getItem(item) {
            try {
              const itemp = await Item
                .findOne({ Id: item });
              return itemp;
            }
            catch (err) {
              console.log(err);
            }
        }
    
        for(let item of itemArray ){
           getItem (item)
              .then(ItemReturned=> {
                orderNew._items(ItemReturned) **//here i get the correct item**
              });
              console.log("orderNew._items-----"+orderNew._items);**//here i get null**
              }
         }

1 Ответ

0 голосов
/ 14 июля 2020

Вы должны поместить свой оператор console.log("orderNew._items-----"+orderNew._items); в блок then.

    for(let item of itemArray ){
       getItem (item)
          .then(ItemReturned=> {
            orderNew._items(ItemReturned)
            console.log("orderNew._items-----"+orderNew._items);
          });
          }
     }

Потому что, когда интерпретатор node видит .then() обратный вызов, это pu sh обратный вызов очереди обратного вызова и продолжайте выполнение, пока ваш обратный вызов не готов и ваш console.log() печатает null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...