Ребята, я пишу 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);
Спасибо!
db.query
принимает обратный вызов в качестве второго параметра. Есть много факторов, которые определят, будет ли он масштабироваться — просто взглянуть на этот крошечный кусок кода недостаточно, чтобы сделать это определение. - person WiredPrairie   schedule 18.11.2013