Comparing version 0.1.2 to 0.1.3
@@ -150,3 +150,3 @@ 'use strict'; | ||
internals.serializeAttribute = function (value, attr, options) { | ||
if(!attr) { | ||
if(!attr || _.isNull(value)) { | ||
return null; | ||
@@ -212,3 +212,7 @@ } | ||
if(_.has(item, key)) { | ||
result[key] = internals.serializeAttribute(item[key], attr, options); | ||
var val = internals.serializeAttribute(item[key], attr, options); | ||
if(!_.isNull(val) || options.returnNulls) { | ||
result[key] = val; | ||
} | ||
} | ||
@@ -223,7 +227,11 @@ | ||
serializer.serializeItemForUpdate = function (schema, action, item) { | ||
var serialized = serializer.serializeItem(schema, item); | ||
var serialized = serializer.serializeItem(schema, item, {returnNulls: true}); | ||
return _.reduce(serialized, function (result, value, key) { | ||
if(key !== schema.hashKey && key !== schema.rangeKey) { | ||
result[key] = {Action : action, Value: value}; | ||
if(_.isNull(value)) { | ||
result[key] = {Action : 'DELETE'}; | ||
} else { | ||
result[key] = {Action : action, Value: value}; | ||
} | ||
} | ||
@@ -230,0 +238,0 @@ |
{ | ||
"name": "vogels", | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"author": "Ryan Fitzgerald <ryan@codebrewstudios.com>", | ||
@@ -5,0 +5,0 @@ "description": "DynamoDB data mapper", |
@@ -100,3 +100,3 @@ 'use strict'; | ||
serializer.serializeItem(schema, {agree: 'false'}).should.eql({agree: {N: '0'}}); | ||
serializer.serializeItem(schema, {agree: null}).should.eql({agree: {N: '0'}}); | ||
//serializer.serializeItem(schema, {agree: null}).should.eql({agree: {N: '0'}}); | ||
serializer.serializeItem(schema, {agree: 0}).should.eql({agree: {N: '0'}}); | ||
@@ -306,2 +306,14 @@ }); | ||
it('should serialize null value to a DELETE action', function () { | ||
schema.String('name'); | ||
schema.Number('age'); | ||
var item = serializer.serializeItemForUpdate(schema, 'PUT', {age: null, name : 'Foo Bar'}); | ||
item.should.eql({ | ||
name: {Action: 'PUT', Value: {S: 'Foo Bar'} }, | ||
age: {Action: 'DELETE'} | ||
}); | ||
}); | ||
it('should not serialize hashkey attribute', function () { | ||
@@ -308,0 +320,0 @@ schema.String('email', {hashKey: true}); |
93376
2461