-1

나는 dynamoDB 및 node.js를 처음 사용합니다. 데이터베이스 (dynamodb)에 쿼리를 작성하고 코드를 작성하는 코드를 작성했습니다. 데이터베이스에서 사용자가 입력 한 요소의 경우. 내가 확인할 수 있지만 사용자가 데이터베이스에 존재하지 않는 다른 숫자로 시도 할 때 null 값을 얻고 있습니다.node.js를 사용하여 dynamo db에없는 값을 쿼리 할 때 null 값 가져 오기

내 테이블 이름은 "DevReferenceNumber"이고 기본 키 "referenc 번호"인 하나의 열만입니다.

'use strict'; 

    var AWS = require('aws-sdk'); 

    var docClient = new AWS.DynamoDB.DocumentClient({ region : 'us-east-1'}); 


    function close(sessionAttributes, fulfillmentState, message) { 
     return { 
      sessionAttributes, 
      dialogAction: { 
       type: 'Close', 
       fulfillmentState, 
       message, 
      }, 
     }; 
    } 


    exports.handler = (event, context, callback) => { 

    try{ 

     console.log(`event.bot.name=${event.bot.name}`); 

     if(event.bot.name != 'getCustomerReferenceNumber'){ 
      callback('Invalid Bot Name'); 
     } 

     dispatch(event, (response) => { 

      callback(null, response) 

     }); 

    }catch(err){ 


     callback("Error is occured while querying"); 

    } 

    }; 
    function dispatch(intentRequest, callback){ 

    console.log(`dispatch UserID => ${intentRequest.userId}, intentName => ${intentRequest.currentIntent.name}`); 

    const intentName = intentRequest.currentIntent.name; 

     if(intentName === "checkReferenceNumber"){ 
     return referenceNumber(intentRequest, callback); 

     } 



} 
function referenceNumber(intentRequest, callback){ 

    const enteredReferenceNumber = intentRequest.currentIntent.slots.ReferenceNumber; 
    const sessionAttributes = intentRequest.sessionAttributes; 

    console.log("User has entered reference number is --> " + enteredReferenceNumber); 

    var params = { 

     TableName : "DevReferenceNumber", 
     KeyConditionExpression: "#refer = :ref", 
     ProjectionExpression : "#refer", 
     ExpressionAttributeNames: { 
      "#refer" : "referencenumber" 
     }, 
     ExpressionAttributeValues:{ 
      ":ref": parseInt(enteredReferenceNumber) 
     } 
    }; 

    docClient.query(params, function(err, data){ 


     if(err){ 

      callback(close(sessionAttributes, 'Fulfilled', { 
        contentType: 'PlainText', 
        content : 'Developer reference number is not matched with data from database'})); 
     } 

     else { 

      data.Items.forEach(function (item){ 

       console.log("User matched data is ==> " + item.referencenumber); 

       callback(close(sessionAttributes, 'Fulfilled', { 
        contentType: 'PlainText', 
        content : 'Developer reference number is matched with data from database'})); 
      }); 
     } 



    }); 
} 

답변

1

그것은 당신이 일치하는 레코드가 없을 때 널 기록을 얻을 것이다 분명하다. 노드 콜백에서 null을 원하지 않으면 널 확인을 수행하고 원하는 방식대로 데이터를 리턴하는 사용자 정의 로직을 수행 할 수 있습니다.

+0

문서를 살펴볼 때 요소가 발견되지 않으면 빈 세트가 반환된다는 것을 언급합니다. if (data.length == 0) 다음 callbacks 할 조건을 넣으려고했지만 여전히 인쇄 null입니다. 몇 가지 예제 코드로 나를 도울 수 있습니까? –

+0

나는 빈 세트가있는 속성 중 하나를 사용하여 확인한 해답을 얻었습니다. 감사 –