民间, 我正在编写一个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);
谢谢!
答案 0 :(得分:2)
您显示的此代码是异步的,并且正在使用回调。 db.query调用中的函数(错误,数据){...}是回调函数。
请注意,在该代码中,您将函数定义传递给db.query() - db.query将调用此函数,因此名称为callback。
这个代码是否“能够与数百个并发API调用者很好地扩展”的问题在本论坛中无法解答。如果不了解有关环境的大量详细信息,很难/不可能给出一个很好的答案。