【发布时间】:2018-11-02 13:05:50
【问题描述】:
我正在开发一个 lambda 函数,该函数将存储有关不同用户的信息。 我有一个属性,userID 作为我的主分区键,并且 storedObject 作为我的主排序键。 当我使用 PutItem 时,我希望它仅在存储对象属性中不存在该项目时添加它。
这是我的代码
var params = {
TableName: 'TrackItDB',
Item: {
'userID' : {S: currentUser},
'storedObject' : {S: itemName},
'lenderPerson' : {S: personName},
'objectStatus' : {S: 'lent'},
'transactionDate': {S: date},
}
};
....
const checkIfItemIsStoredParams = {
Key: {
"userID" : {
S: currentUser
},
"storedObject" : {
S: itemName
}
},
TableName: "TrackItDB"
};
.....
dynamodb.getItem(checkIfItemIsStoredParams, function(err, data) {
if (!data) {
// no match, add the item
console.log('Item did not exist, storing to DB');
console.log(params);
return dynamodb.putItem(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});
}
else {
console.log('Get item succeeded', data);
}
}
});
我遇到的问题是即使没有数据,它也总是将 Get Item succeeded 输出到控制台。我已经尝试过 if (data) 和 if (!data) 并且即使没有返回数据,也都成功返回了获取项目。
【问题讨论】:
-
console.log('Get item succeeded', data);后面有一个额外的右大括号,但不确定它是如何正常运行的。 -
我在上面省略了一些 ... 所在的代码
标签: node.js aws-lambda amazon-dynamodb