Я использую Dynamo DB в AWS.Я просмотрел некоторые документы и теперь получил полуфункциональную лямбда-функцию.Я не слишком знаком с nodejs, но подумал: «это javascript! Просто относитесь к нему так!».
Так что эта функция предназначена для сканирования базы данных в user_handle
db, и если у пользователя уже есть существующийобработать, затем предупредить пользователя, что описатель уже существует.Если дескриптор не существует, обновите элемент user_handle
.
Так что моя функция обновляет дескриптор, если он не существует, но если он существует, то мне нужно увидеть это в моем ответе.
Вот моя лямбда-функция:
const AWS = require('aws-sdk'); const docClient = new AWS.DynamoDB.DocumentClient({region: 'us-west-1'});
exports.handler = (event, context, callback) => {
let e = JSON.parse(event.body)
var params = {
TableName: event.stageVariables.user,
Key: { 'userId' : e.userId },
UpdateExpression: 'set user_handle = :user_handle',
ExpressionAttributeValues: {
':user_handle' : e.user_handle,
}
};
var scanParams = {
TableName : event.stageVariables.user,
FilterExpression : 'user_handle = :user_handle',
ExpressionAttributeValues : {':user_handle' : e.user_handle}
};
docClient.scan(scanParams, function(err, data) {
if (err) {
console.log("ERROR:", err);
let response = {
"statusCode": err.statusCode,
"headers": {},
"body": JSON.stringify(err)
}
console.log("RESPONSE", response)
callback(response)
} else {
let response = {
"statusCode": 200,
"body": JSON.stringify({"Success": true})
}
callback(null, response)
// console.log("RESPONSE", response)
// console.log("DATA", data)
if( data.Count >= 1 ){
let handleExistsResponse = {
"statusCode": 200,
"body": JSON.stringify({"Success": false})
}
console.log("HANDLE IT", handleExistsResponse)
callback(null, handleExistsResponse)
} else {
docClient.update(params, function(err, data) {
if (err) {
console.log("ERROR:", err);
let response = {
"statusCode": err.statusCode,
"headers": {},
"body": JSON.stringify(err)
}
console.log(response)
callback(response)
} else {
let response = {
"statusCode": 200,
"body": JSON.stringify({"Success": true})
}
callback(null, response)
}
});
}
}
// console.log("DATA", data);
});
};
Вот функция DB в моем приложении React Native:
export async function createUserHandle() {
return new Promise((resolve, reject) => {
let { auth } = store.getState()
let reqBody = {
userId: auth.user.username,
user_handle: auth.user_handle,
}
let path = '/u/create-user-handle'
let myInit = {
headers: { 'Content-Type': 'application/json' },
body: reqBody,
// response: true,
}
API.post(apiName, path, myInit)
.then((resp) => {
console.log('response from user handle', resp)
resolve(resp)
})
.catch((error) => {
console.warn('Create USER Handle ERROR', error)
reject(error)
})
})
}
В Lambda я надеялся, что if (data.Count >= 1){}
может дать мне ответ о ложном ответе от
let handleExistsResponse = {
"statusCode": 200,
"body": JSON.stringify({"Success": false})
}
и если оно ложно, то я могу отобразить соответствующее сообщение на внешнем интерфейсе.но ответ, который я получаю, является правдой, если я утешаю его на внешнем интерфейсе.
(кроме того, я не возражаю против проверки кода, возможно, я в третий раз пишу такую функцию. Спасибо!)