Я новичок в безостановочной фреймворке. При изучении лучших практик в бессервере. hereЛучшие практики в безсерверной платформе
У меня возник вопрос о «Инициализация внешних служб за пределами вашего Лямбда-кода». Как его реализовать? Например: Ниже кода в handler.js
const getOneUser = (event, callback) => {
let response = null;
// validate parameters
if (event.accountid && process.env.SERVERLESS_SURVEYTABLE) {
let docClient = new aws.DynamoDB.DocumentClient();
let params = {
TableName: process.env.SERVERLESS_USERTABLE,
Key: {
accountid: event.accountid,
}
};
docClient.get(params, function(err, data) {
if (err) {
// console.error("Unable to get an item with the request: ", JSON.stringify(params), " along with error: ", JSON.stringify(err));
return callback(getDynamoDBError(err), null);
} else {
if (data.Item) { // got response
// compose response
response = {
accountid: data.Item.accountid,
username: data.Item.username,
email: data.Item.email,
role: data.Item.role,
};
return callback(null, response);
} else {
// console.error("Unable to get an item with the request: ", JSON.stringify(params));
return callback(new Error("404 Not Found: Unable to get an item with the request: " + JSON.stringify(params)), null);
}
}
});
}
// incomplete parameters
else {
return callback(new Error("400 Bad Request: Missing parameters: " + JSON.stringify(event)), null);
}
};
Вопрос заключается в том, что, как первоначальный DynamoDB вне моего кода лямбда.
Update 2:
ниже код оптимизированной?
Handler.js
let survey = require('./survey');
module.exports.handler = (event, context, callback) => {
return survey.getOneSurvey({
accountid: event.accountid,
surveyid: event.surveyid
}, callback);
};
survey.js
let docClient = new aws.DynamoDB.DocumentClient();
module.exports = (() => {
const getOneSurvey = (event, callback) {....
docClient.get(params, function(err, data)...
....
};
return{
getOneSurvey : getOneSurvey,
}
})();
* «Под оптимизированным кодом?» * Я бы сказал «нет», а не в соответствии с этим правилом. Каждый раз, когда вызывается «обработчик», «обследование».getOneSurvey() ', и каждый раз, когда это происходит, вы создаете новый' aws.DynamoDB.DocumentClient'. Это нужно присваивать переменной соответствующей области только один раз, когда ваш исходный код загружается, а не каждый раз при вызове обработчика. –
OK! Я помещаю docClient вне module.exports. Сначала он загрузит и создаст только один docClient. Я правильно понял? – Jim