Comparing version 0.10.0 to 0.11.0
@@ -344,4 +344,8 @@ 'use strict'; | ||
var deserialized = _.reduce(schema.attrs, function (result, attr, key) { | ||
result[key] = internals.deserializeAttribute(item[key], attr); | ||
var value = internals.deserializeAttribute(item[key], attr); | ||
if(!_.isNull(value) && !_.isUndefined(value)) { | ||
result[key] = value; | ||
} | ||
return result; | ||
@@ -348,0 +352,0 @@ }, {}); |
@@ -9,2 +9,3 @@ 'use strict'; | ||
async = require('async'), | ||
utils = require('./utils'), | ||
ParallelScan = require('./parallelScan'); | ||
@@ -122,5 +123,7 @@ | ||
var attrs = utils.omitNulls(data); | ||
var params = { | ||
TableName : self.tableName(), | ||
Item : self.serializer.serializeItem(self.schema, data) | ||
Item : self.serializer.serializeItem(self.schema, attrs) | ||
}; | ||
@@ -137,3 +140,3 @@ | ||
var item = self.initItem(data); | ||
var item = self.initItem(attrs); | ||
self._after.emit('create', item); | ||
@@ -140,0 +143,0 @@ |
@@ -9,2 +9,8 @@ 'use strict'; | ||
utils.omitNulls = function (data) { | ||
return _.omit(data, function(value) { | ||
return _.isNull(value) || _.isUndefined(value); | ||
}); | ||
}; | ||
utils.mergeResults = function (responses, tableName) { | ||
@@ -11,0 +17,0 @@ var result = { |
{ | ||
"name": "vogels", | ||
"version": "0.10.0", | ||
"version": "0.11.0", | ||
"author": "Ryan Fitzgerald <ryan@codebrewstudios.com>", | ||
@@ -5,0 +5,0 @@ "description": "DynamoDB data mapper", |
@@ -468,2 +468,15 @@ 'use strict'; | ||
it('should omit attributes with null values', function () { | ||
schema.String('name'); | ||
schema.String('title'); | ||
var itemResp = {name : {S: 'Tim Tester'} }; | ||
var item = serializer.deserializeItem(schema, itemResp); | ||
expect(item).to.include.keys('name'); | ||
expect(item).to.not.include.keys('title'); | ||
}); | ||
}); | ||
@@ -470,0 +483,0 @@ |
@@ -267,2 +267,34 @@ 'use strict'; | ||
it('should omit null values', function (done) { | ||
schema.String('email', {hashKey: true}); | ||
schema.String('name'); | ||
schema.Number('age').allow(null); | ||
table = new Table('accounts', schema, serializer, dynamodb); | ||
var request = { | ||
TableName: 'accounts', | ||
Item : { | ||
email : {S : 'test@test.com'}, | ||
name : {S : 'Tim Test'} | ||
} | ||
}; | ||
var item = {email : 'test@test.com', name : 'Tim Test', age : null}; | ||
dynamodb.putItem.withArgs(request).yields(null, {}); | ||
serializer.serializeItem.withArgs(schema, {email : 'test@test.com', name : 'Tim Test'}).returns(request.Item); | ||
table.create(item, function (err, account) { | ||
account.should.be.instanceof(Item); | ||
account.get('email').should.equal('test@test.com'); | ||
account.get('name').should.equal('Tim Test'); | ||
expect(account.toJSON()).to.have.keys(['email', 'name']); | ||
done(); | ||
}); | ||
}); | ||
}); | ||
@@ -269,0 +301,0 @@ |
178254
47
4269
17