Skip to content

Commit 835a52c

Browse files
committed
fix dynamodb-toolbox#51 by checking for empty ExpressionAttributeValues objects
1 parent e6ad9a7 commit 835a52c

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

classes/Entity.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const parseConditions = require('../lib/expressionBuilder')
1818
const parseProjections = require('../lib/projectionBuilder')
1919

2020
// Import error handlers
21-
const { error, transformAttr } = require('../lib/utils')
21+
const { error, transformAttr, isEmpty } = require('../lib/utils')
2222

2323
// Declare Entity class
2424
class Entity {
@@ -346,7 +346,7 @@ class Entity {
346346
Key: getKey(this.DocumentClient)(data,schema.attributes,schema.keys.partitionKey,schema.keys.sortKey)
347347
},
348348
ExpressionAttributeNames ? { ExpressionAttributeNames } : null,
349-
ExpressionAttributeValues ? { ExpressionAttributeValues } : null,
349+
!isEmpty(ExpressionAttributeValues) ? { ExpressionAttributeValues } : null,
350350
ConditionExpression ? { ConditionExpression } : null,
351351
capacity ? { ReturnConsumedCapacity: capacity.toUpperCase() } : null,
352352
metrics ? { ReturnItemCollectionMetrics: metrics.toUpperCase() } : null,
@@ -657,7 +657,7 @@ class Entity {
657657
ExpressionAttributeNames: Object.assign(names,ExpressionAttributeNames)
658658
},
659659
typeof params === 'object' ? params : {},
660-
Object.keys(ExpressionAttributeValues).length > 0 ? { ExpressionAttributeValues } : {},
660+
!isEmpty(ExpressionAttributeValues) ? { ExpressionAttributeValues } : {},
661661
ConditionExpression ? { ConditionExpression } : {},
662662
capacity ? { ReturnConsumedCapacity: capacity.toUpperCase() } : null,
663663
metrics ? { ReturnItemCollectionMetrics: metrics.toUpperCase() } : null,
@@ -800,7 +800,7 @@ class Entity {
800800
},{})
801801
},
802802
ExpressionAttributeNames ? { ExpressionAttributeNames } : null,
803-
ExpressionAttributeValues ? { ExpressionAttributeValues } : null,
803+
!isEmpty(ExpressionAttributeValues) ? { ExpressionAttributeValues } : null,
804804
ConditionExpression ? { ConditionExpression } : null,
805805
capacity ? { ReturnConsumedCapacity: capacity.toUpperCase() } : null,
806806
metrics ? { ReturnItemCollectionMetrics: metrics.toUpperCase() } : null,

lib/utils.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ module.exports.toBool = val =>
2121
// has value shortcut
2222
module.exports.hasValue = val => val !== undefined && val !== null
2323

24+
// isEmpty object shortcut
25+
module.exports.isEmpty = val => val === undefined || (typeof val === 'object' && Object.keys(val).length === 0)
26+
2427
// Inline error handler
2528
const error = err => { throw new Error(err) }
2629
module.exports.error = error
@@ -39,7 +42,7 @@ module.exports.keyTypeError = field => {
3942
}
4043

4144

42-
// Tranform atribute values
45+
// Transform atribute values
4346
module.exports.transformAttr = (mapping,value,data) => {
4447
value = mapping.transform ? mapping.transform(value,data) : value
4548
return mapping.prefix || mapping.suffix ?

0 commit comments

Comments
 (0)