Асин c / ожидание путаницы - PullRequest
0 голосов
/ 27 мая 2020

В этом коде я пытаюсь просмотреть все статьи, опубликованные на данный момент пользователем. Я добавлял столбцы динамически всякий раз, когда пользователем создается новая статья. Поэтому я создал массив для хранения только статей, которые позже должен быть отрисован в файле e js.

    app.get('/users/article/feed',checkAuthenticated,(request,response)=>{
    let articleArray=[]

    const sql="SELECT noOfArticles FROM Articles WHERE id=?"
    db.query(sql,[request.user.id], async (err,result)=>{
      if(err) throw err
      let noOfArticles=result[0].noOfArticles
      let promise=new Promise((resolve,reject)=>{
         for(let i=1;i<=noOfArticles;i++){
            const sql1="SELECT ?? FROM Articles WHERE id=?"
            let index='article'+i
            db.query(sql1,[index,request.user.id],(err,result)=>{
               if(err) throw err
               articleArray.push(result[0][index])
            })
            if(articleArray.length===noOfArticles){
               resolve(articleArray);
              }

         } //end of for loop

        })//end of promise function

         let resultFinal=await promise;
       console.log(resultFinal)

        })

        response.render('viewArticles',resultFinal)
       })

Я предполагаю, что в части asyn c await есть ошибка. РезультатФинал не ведется. Как я могу решить эту проблему

1 Ответ

0 голосов
/ 27 мая 2020

с моей точки зрения, вы используете обратный вызов внутри обратных вызовов, и это трудно понять, я опубликую рефакторинг вашего кода, возможно, он поможет вам выяснить, что происходит

app.get('/users/article/feed', checkAuthenticated, async (request, response) => {
  let articleArray = []

  const sql1 = 'SELECT noOfArticles FROM Articles WHERE id=?'
  const result1 = await db.query(sql1, [request.user.id])

  let noOfArticles = result1[0].noOfArticles

  for (let i = 1; i <= noOfArticles; i++) {
    const sql2 = 'SELECT ?? FROM Articles WHERE id=?'
    let index = 'article' + i
    const result2 = await db.query(sql1, [index, request.user.id])

    articleArray.push(result2[0][index])
  } //end of for loop


  let resultFinal = articleArray
  console.log(resultFinal)

  response.render('viewArticles', resultFinal)
})
...