'async'모듈을 사용하지 않을 때만 결과가 반환되는 이유는 무엇입니까?

MikeO

내가 사용하는 기술은 Node.js, express 및 MongoDB입니다.

모든 레시피에 대해 데이터베이스를 쿼리하는 'getAllRecipes'라는 메서드가 있습니다. 이것은 잘 작동합니다.

'getAllRecipes'콜백 메서드에서 각 항목 / 레시피를 반복하여 메모와 주석을 얻습니다. 루프 내부의 작업은 'let'을 모방하기 위해 클로저 내부에 배치됩니다. 그렇지 않으면 모든 recipeID가 동일합니다.

이제 'async.series'와 함께 사용할 배열에 대한 추가 호출을 추가합니다. 우선 'getRecipeNotes'를 호출하고 이것이 반환되면 'getRecipeNotes'콜백 메서드에서 'getRecipeComments'를 호출합니다.

최종 출력은 다음과 같은 내용을 보여줍니다.

[
  {
    "_id": "56d070ac7c3965e85d3ebd38",
    "userID": "56cf383a1f8303082484f35f",
    "name": "Chocolate cake",
    "instructions": "Add mixture to bowl, and then mix",
    "dateTimeSubmitted": "2016-02-26T15:35:08.868Z",
    "tags": "cooking, cake, chocolate",
    "active": 1,
    "notes": [],
    "comments": []
  },
  {
    "_id": "56d070ac7c3965e85d3ebd3a",
    "name": "num1",
    "quantity": "5",
    "notes": [],
    "comments": []
  }, ...]

모든 '노트'와 모든 '코멘트'는 빈 배열입니다.

댓글 모음을 확인한 결과 recipeID : "56d070ac7c3965e85d3ebd38"에 대한 항목이 있습니다.

각 레시피의 모든 주석을 반환하도록 'getRecipeComments'메서드를 수정하면 모두 반환됩니다.

또한 recipeID를 사용하여 쿼리를 유지하고 recipeID : "56d070ac7c3965e85d3ebd38"을 사용하여 getAllRecipes 메소드 외부에서 호출하면 데이터도 잘 반환됩니다. getAllRecipes 메소드를 사용하지 않습니다.

getAllRecipes :

function getAllRecipes( db, callback )
{
    //query( db, {}, 'recipes', callback );
    query( db, {}, 'recipes', function( err, recipeData )
    {
        tempArray = recipeData.slice();

        if( err || !tempArray.length )
            callback( err );
        else
        {
            var taskArr = [];

            for( var i=0; i < tempArray.length; i++ )
            {   
                (function()
                {
                    var tID = tempArray[ i ]._id;
                    taskArr.push( function( iCallback )
                    { 
                        getRecipeNotes( db, tID, function( err2, noteData )
                        { 
                            getRecipeComments( db, tID, function( err3, commentData )
                            {
                                if( err2 )
                                {
                                    iCallback( err2 );
                                    return;
                                }   

                                if( err3 )
                                {
                                    iCallback( err3 );                        
                                    return;
                                }

                                for( var j=0; j < tempArray.length; j++ )
                                {
                                    if( tempArray[ j ]._id === tID )
                                    {
                                        tempArray[ j ].notes                = noteData;
                                        tempArray[ j ].comments             = commentData;
                                    }
                                }

                                iCallback();
                            });
                        });
                    });
                })();
            }

            async.series( taskArr, function( err )
            {
                callback( err, tempArray );

            } );
        }
    });
}

getRecipeComments :

function getRecipeComments( db, recipeID, callback )
{
    query( db, { recipeID : recipeID }, 'comments', callback );
}

질문:

function query( db, query, strColl, callback )
{
    var coll = db.get( strColl );

    coll.find( query, function( err, doc )
   {    
      if( err )
        console.log( err );

      callback( err, doc );
   });
}

또한 'getRecipeNotes'및 'getRecipeComments'에 대한 호출을 두 개의 개별 작업으로 분리했지만 결과는 동일합니다.

메모 나 댓글이 반환을 거부하는 이유를 알 수 있습니까?

MikeO

문제가 해결되었습니다. 데이터베이스 쿼리 호출에 대한 유형 오류 인 것 같습니다.

나는 단지 간단한 일이 필요했습니다.

recipeID = recipeID.toString();

쿼리 전

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

$ RANDOM을 사용할 때 결과가 고르지 않게 퍼지는 이유는 무엇입니까?

분류에서Dev

이 Java 쿼리가 실패하는 이유는 무엇입니까? 결과가있을 때 0 반환

분류에서Dev

모듈이 일반 텍스트 만 내보낼 때 동적으로 가져온 ESModule이 JSON을 반환하는 이유는 무엇입니까?

분류에서Dev

빈 목록과 연결하면 목록이 반환되지만 새 목록과 연결할 때 반환되지 않는 이유는 무엇입니까?

분류에서Dev

textarea.value가 "정의되지 않음"을 반환하는 이유는 무엇입니까? (Native Javascript 사용)

분류에서Dev

datetime 모듈을 사용하여 날짜를 구문 분석 할 때 형식 코드 "% -m"및 "% -d"가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

Nuxt에서 Axios와 함께 Async를 사용할 때 데이터가 반환되지 않는 이유는 무엇입니까?

분류에서Dev

Try [Unit]의 결과로 for comprehension을 사용할 때 (일관되지 않은) 컴파일러 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

findOneBy가 결과 대신 null을 반환하는 이유는 무엇입니까?

분류에서Dev

내가 만든 사용자 지정 함수가 빈 값을 반환하는 이유는 무엇입니까? -DFS

분류에서Dev

XPath 유효성 검사기가 올바른 결과를 반환 할 때 XmlNode.SelectNodes가 빈 목록을 반환하는 이유는 무엇입니까?

분류에서Dev

Django가 새 사용자를 만들 때 이메일 무결성을 확인하지 않는 이유는 무엇입니까?

분류에서Dev

실행시 결과가 반환되지 않는 이유는 무엇입니까?

분류에서Dev

사용자 지정 PHP 모듈을 사용할 때 $ _POST가 채워지지 않는 이유는 무엇입니까?

분류에서Dev

스택 메모리가 사용되지 않을 때 할당되는 이유는 무엇입니까?

분류에서Dev

modinfo가 "모듈을 찾을 수 없음"이라고 말하지만 lsmod가 모듈이로드되었다고 주장하는 이유는 무엇입니까?

분류에서Dev

때때로 None을 반환 할 수 있지만 re.match에서 group 메서드가 허용되는 이유는 무엇입니까?

분류에서Dev

ResultSet을 사용할 때 null이있는 추가 결과가 하나만 나오는 이유는 무엇입니까?

분류에서Dev

다른 프로그램을 사용할 때이 코드가 다른 결과를 반환하는 이유는 무엇입니까?

분류에서Dev

Bootstrap을 사용할 때이 하이퍼 링크가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

Rails에서 Finder 메서드가 모든 결과를 반환하기를 원할 때 하나의 결과 만 반환하는 이유는 무엇입니까?

분류에서Dev

append.Child가 Div에서 사용할 때 null을 반환하지만 본문에 넣으면 작동하는 이유는 무엇입니까?

분류에서Dev

while 루프가 작동하지만 내 값을 반환 할 때 if 문이 아닌 이유는 무엇입니까?

분류에서Dev

정의되지 않은 목록을 접을 때 foldr가 undefined를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

new 또는 delete를 사용하지 않을 때 힙 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

명령을 파이프 할 때 "slabtop -o"가 처음 23 줄만 반환하는 이유는 무엇입니까?

분류에서Dev

이 함수가 정의되지 않았지만 콘솔에서 loggin을 반환하지 않는 이유는 무엇입니까?

분류에서Dev

사전을 만들 때 데이터가 여러 번 반복되는 이유는 무엇입니까?

분류에서Dev

preload.js가 "오류 : 모듈을 찾을 수 없음"을 반환하는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    $ RANDOM을 사용할 때 결과가 고르지 않게 퍼지는 이유는 무엇입니까?

  2. 2

    이 Java 쿼리가 실패하는 이유는 무엇입니까? 결과가있을 때 0 반환

  3. 3

    모듈이 일반 텍스트 만 내보낼 때 동적으로 가져온 ESModule이 JSON을 반환하는 이유는 무엇입니까?

  4. 4

    빈 목록과 연결하면 목록이 반환되지만 새 목록과 연결할 때 반환되지 않는 이유는 무엇입니까?

  5. 5

    textarea.value가 "정의되지 않음"을 반환하는 이유는 무엇입니까? (Native Javascript 사용)

  6. 6

    datetime 모듈을 사용하여 날짜를 구문 분석 할 때 형식 코드 "% -m"및 "% -d"가 작동하지 않는 이유는 무엇입니까?

  7. 7

    Nuxt에서 Axios와 함께 Async를 사용할 때 데이터가 반환되지 않는 이유는 무엇입니까?

  8. 8

    Try [Unit]의 결과로 for comprehension을 사용할 때 (일관되지 않은) 컴파일러 오류가 발생하는 이유는 무엇입니까?

  9. 9

    findOneBy가 결과 대신 null을 반환하는 이유는 무엇입니까?

  10. 10

    내가 만든 사용자 지정 함수가 빈 값을 반환하는 이유는 무엇입니까? -DFS

  11. 11

    XPath 유효성 검사기가 올바른 결과를 반환 할 때 XmlNode.SelectNodes가 빈 목록을 반환하는 이유는 무엇입니까?

  12. 12

    Django가 새 사용자를 만들 때 이메일 무결성을 확인하지 않는 이유는 무엇입니까?

  13. 13

    실행시 결과가 반환되지 않는 이유는 무엇입니까?

  14. 14

    사용자 지정 PHP 모듈을 사용할 때 $ _POST가 채워지지 않는 이유는 무엇입니까?

  15. 15

    스택 메모리가 사용되지 않을 때 할당되는 이유는 무엇입니까?

  16. 16

    modinfo가 "모듈을 찾을 수 없음"이라고 말하지만 lsmod가 모듈이로드되었다고 주장하는 이유는 무엇입니까?

  17. 17

    때때로 None을 반환 할 수 있지만 re.match에서 group 메서드가 허용되는 이유는 무엇입니까?

  18. 18

    ResultSet을 사용할 때 null이있는 추가 결과가 하나만 나오는 이유는 무엇입니까?

  19. 19

    다른 프로그램을 사용할 때이 코드가 다른 결과를 반환하는 이유는 무엇입니까?

  20. 20

    Bootstrap을 사용할 때이 하이퍼 링크가 작동하지 않는 이유는 무엇입니까?

  21. 21

    Rails에서 Finder 메서드가 모든 결과를 반환하기를 원할 때 하나의 결과 만 반환하는 이유는 무엇입니까?

  22. 22

    append.Child가 Div에서 사용할 때 null을 반환하지만 본문에 넣으면 작동하는 이유는 무엇입니까?

  23. 23

    while 루프가 작동하지만 내 값을 반환 할 때 if 문이 아닌 이유는 무엇입니까?

  24. 24

    정의되지 않은 목록을 접을 때 foldr가 undefined를 반환하지 않는 이유는 무엇입니까?

  25. 25

    new 또는 delete를 사용하지 않을 때 힙 오류가 발생하는 이유는 무엇입니까?

  26. 26

    명령을 파이프 할 때 "slabtop -o"가 처음 23 줄만 반환하는 이유는 무엇입니까?

  27. 27

    이 함수가 정의되지 않았지만 콘솔에서 loggin을 반환하지 않는 이유는 무엇입니까?

  28. 28

    사전을 만들 때 데이터가 여러 번 반복되는 이유는 무엇입니까?

  29. 29

    preload.js가 "오류 : 모듈을 찾을 수 없음"을 반환하는 이유는 무엇입니까?

뜨겁다태그

보관