nodejs,dynamo table获取操作回调或异步

时间:2013-11-17 22:03:27

标签: performance node.js amazon-dynamodb restify

民间,   我正在编写一个API,它从DynamoDB表中获取结果,并将JSON放回浏览器。

下面的代码有效,并返回所需的结果......但是,在阅读了异步和回调之后,我知道是否应该以另一种方式写这个对我来说变得很重要?以下是否适用于数百个并发API调用者?

此代码似乎没有使用回调。它是异步的吗?

var restify = require('restify');
var AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-1'});
var db = new AWS.DynamoDB();

function myFunction(req, res, next) {
  var params = {
    TableName : 'myTable',
    KeyConditions : 
      {
        "number" : 
          {
            "AttributeValueList" : [
              {
                "S" : req.params.simethingid
              }
            ],
            "ComparisonOperator" : "EQ"
          }
      }
  }

  db.query(params, function(err, data) {
    if (err) {
      console.log(err);
      } 
    else {
      res.statusCode = 200;
      res.setHeader('Content-Type', 'text/plain; charset=UTF-8');
      res.send(JSON.stringify(data, undefined, 2));
      console.log(JSON.stringify(data, undefined, 2))
      res.end();
      }
  });
  return next();
 }

server.get('/searchme/:somethingid', myFunction);

谢谢!

1 个答案:

答案 0 :(得分:2)

您显示的此代码是异步的,并且正在使用回调。 db.query调用中的函数(错误,数据){...}是回调函数。

请注意,在该代码中,您将函数定义传递给db.query() - db.query将调用此函数,因此名称为callback。

这个代码是否“能够与数百个并发API调用者很好地扩展”的问题在本论坛中无法解答。如果不了解有关环境的大量详细信息,很难/不可能给出一个很好的答案。