В моей таблице DynamoDB есть элементы с userA (MyUser), следующие за UserB (myFriends ..)
Primary-------|---- Srotkey---|---FriendID---|
Myid..... Friend-01 22223333
в той же таблице у меня также есть профили пользователей ..
Primary-------|---- Srotkey---|----Name----|
Myid..... Friend-01
22223333 Profile Rose
Теперь я хочу иметь функцию для возврата профиля моего друга.
Я полагаю, что моя лямбда-функция «getFriendProfile» должна выполнить два запроса, получить идентификатор человека, за которым я следую в первом запросе, а затем использовать этот результат для извлечения ее профиля во втором запросе.
Я знаю, как получить эти результаты по отдельности, но я не знаю, как их объединить и объединить их в одну функцию.
Первый запрос (getPeopleIFollow)
module.exports.handler = async (event, context, callback) => {
const _userID = event.userID;
var params = {
TableName: "mytableName",
ProjectionExpression: "FriendID",
KeyConditionExpression: "#tp = :userId and begins_with(#sk, :skv)",
ExpressionAttributeNames: {
"#tp": "userId",
"#sk": "Sortkey",
},
ExpressionAttributeValues: {
":userId": { "S": _userID },
":skv": { "S": "Friend" },
}
}
var Friend_ID;
try {
let data = await dynamodb.query(params).promise();
data.Items.map(
(dataField) => {
Friend_ID = dataField.FriendID.S,
}
);
callback(null, Friend_ID );
}
catch (error) {
console.log(error);
callback(error);
}
};
Моя другая функция выглядит очень похоже на первую ..
getProfileNames ..
module.exports.handler = async (event, context, callback) => {
const _userID = event.myfriendID;
var params = {
TableName: "mytableName",
ProjectionExpression: "Name",
KeyConditionExpression: "#tp = :userId and begins_with(#sk, :skv)",
ExpressionAttributeNames: {
"#tp": "userId",
"#sk": "Sortkey",
},
ExpressionAttributeValues: {
":userId": { "S": _userID },
":skv": { "S": "Profile" },
}
}
try {
let data = await dynamodb.query(params).promise();
const items = data.Items.map(
(dataField) => {
return {
friend_name: dataField.Name.S,
}
}
);
callback(null, items );
}
catch (error) {
console.log(error);
callback(error);
}
};