Javascript DynamoDB查询在node.js中从http服务器调用时返回空对象

Javascript DynamoDB查询在node.js中从http服务器调用时返回空对象,javascript,node.js,amazon-dynamodb,aws-sdk-nodejs,Javascript,Node.js,Amazon Dynamodb,Aws Sdk Nodejs,我是node.js learner。我已经编写了一个本地文件,该文件将从本地m/c连接到dynamo db服务并执行查询。我已经导出了执行查询的函数。 现在,我在node.js中创建了一个http本地服务器,并调用了导出的函数,该函数将调用dynamo db查询。 我在查询dynamo db时使用了promise,但得到的是空对象。 当我执行dynamodb查询函数时,standalone意味着只从同一个文件调用该函数 它按预期返回值,但当从http服务器调用函数时,我面临空对象的问题 var

我是node.js learner。我已经编写了一个本地文件,该文件将从本地m/c连接到dynamo db服务并执行查询。我已经导出了执行查询的函数。 现在,我在node.js中创建了一个http本地服务器,并调用了导出的函数,该函数将调用dynamo db查询。 我在查询dynamo db时使用了promise,但得到的是空对象。 当我执行dynamodb查询函数时,standalone意味着只从同一个文件调用该函数 它按预期返回值,但当从http服务器调用函数时,我面临空对象的问题

var AWS = require("aws-sdk");
var awsConfig = {
    "region": "us-east-1",
    "endpoint": "http://dynamodb.us-east-1.amazonaws.com"
};

if (typeof Promise === 'undefined') {
    AWS.config.setPromisesDependency(require('bluebird'));
  }

const loadCarDetailsWithImage = async function (pKeyValueModelNo,sKeyValueCarName) {

    AWS.config.update(awsConfig);

    var docClient = new AWS.DynamoDB.DocumentClient();

    console.log(pKeyValueModelNo);
    console.log(sKeyValueCarName);

    var params = {
        TableName: "ImageDetails",

        ProjectionExpression:"ModelNo,CarName,ImageUrl",
        KeyConditionExpression: "ModelNo = :mdNo and CarName = :carName",
        ExpressionAttributeValues: {
            ":mdNo": pKeyValueModelNo,
            ":carName": sKeyValueCarName
        },



    };


    //1.Tried like this as option 1
    //but data is empty
    await docClient.query(params).promise().then(function(data) {
        console.log(JSON.stringify(data, null, 2));
      }).catch(function(err) {
        console.log(JSON.stringify(err, null, 2));
      });




    //2.Tried alternative way as option 2
    //but data is empty
    return new Promise(function(resolve,reject){
        docClient.query(params, function (err, data) {
            if (err) {
                console.log("error - " + JSON.stringify(err, null, 2));
                reject(err);
            }
            else {
                console.log("success - " + JSON.stringify(data, null, 2));
                resolve(JSON.stringify(data, null, 2));
            }
        })

    })

}

module.exports = loadCarDetailsWithImage;
在http服务器中接收到请求时调用的被调用函数如下

var car = require('./loadCarDetailsWithImage'); // this I have written at beginning

function callBusinessProcess(id,carName,res){
        console.log("id: "+id+" and name: "+carName);
        var initializePromise =   car(id,carName);
        initializePromise.then(function(result) {
            console.log(result);
            res = result;
        },function(err){
            console.log(err);
        }).then(function(result){
            console.log(result);
        })

    }
产出如下:

success - {
  "Items": [],
  "Count": 0,
  "ScannedCount": 0
}
{
  "Items": [],
  "Count": 0,
  "ScannedCount": 0
}
调用函数如下

if(req.method.toLowerCase() == 'get'
           && req.url.substring(0,9) == '/content/'){

            var q = url.parse(req.url,true).query;
            console.log("Model No :"+q.model);
            console.log("Car Name :"+q.name);
           callBusinessProcess(q.model,q.name,res);


           }
在输出中也有如下的变量值。这些值在db中可用

Model No :bmwx1
Car Name :BMW
pKeyValueModelNo :bmwx1
sKeyValueCarName :BMW

我很困惑,虽然我在函数中使用了promise,但我仍然接收到空对象

您是否可以演示如何调用
callBusinessProcess(id,carName,res){
并确保您获得id和carNameif的值(req.method.toLowerCase()='get'&&req.url.substring(0,9)='/content/){var q=url.parse(req.url,true).query;console.log(“模型号:”+q.Model);console.log(“汽车名:”+q.Name);callBusinessProcess(q.Model,q.Name,res);}。我在我的请求中获取值..我从url获取的打印属性输出型号:bmwx1车名:BMW pKeyValueModelNo:bmwx1 sKeyValueCarName:BMW用户::fetchOneByKey::success-{“Items”:[],“Count”:0,“ScannedCount”:0}你能在你的问题中添加这个信息吗?因为从这里很难阅读。当你用pKeyValueModelNo:bmwx1 sKeyValueCarName:BMW直接调用LoadCardTailswithImage时,修改了我实际QS中的信息。它会给出响应吗?