Comments (8)
DynamoDB doesn't permit undefined
values in the update expression. What's the desired behavior for undefined attributes? Should dynogels just filter them out and ignore them on the update or should they be deleted from Dynamo?
from dynogels.
I suppose the driver should omit this values before sending them to DynamoDB.
Vogels.js is doing that way because my tests didn't fail (neither with null values nor undefined).
By using dynogels I see the only and more comfortable approach is to use a lodash 'omit' function (or similar module) before sending the data to the .update method.
from dynogels.
I think this is a related issue, so I'll put it here.
When you set a field inside an object to null in Model.update
, it returns the object with that field set to null, but a subsequent Model.get
returns the object with the field missing. This is inconsistent and seems like it will result in hard to catch bugs. Vogels' Model.update
returns the object with the field stripped, just like it does from a subsequence Model.get
.
E.g.,
in Vogels, update and get return the same value
// Vogels (using vogels-promisified)
var myModel = await Model.updateAsync({vars:{foo:null});
console.log('%j', myModel.get('vars')); // {}
var freshModel = await Model.getAsync('theidofthemodel');
console.log('%j', freshModel.get('vars')); // {}
in Dynogels, update and get return different values
// Dynogels (using dynogels-promisified)
var myModel = await Model.updateAsync({vars:{foo:null});
console.log('%j', myModel.get('vars')); // {foo:null}
var freshModel = await Model.getAsync('theidofthemodel');
console.log('%j', freshModel.get('vars')); // {}
from dynogels.
Closing as stale
from dynogels.
@dangerginger - Should this issue stay open? The issue I was seeing (different results returned by update
versus get
) was serious enough that I didn't end up using dynogels.
from dynogels.
@aneilbaboo I think your issue is totally separate. Regarding @endymion00's original issue I think he was relying on undocumented behavior of vogels to treat undefined properties as a noop
.
I think what you described is a bug though. Dynogels doesn't allow null values so the result from update
should be the same as in get
as you showed in your example: {}
.
from dynogels.
Makes sense. I'll create a new issue and add a script that demonstrates the problem.
from dynogels.
Actually, it looks like the issue is fixed in the latest version.
from dynogels.
Related Issues (20)
- Does not enforce required() on nested property HOT 6
- What is the best way to convert a list of objects HOT 1
- Provide access to the AWS request object
- Model.validate not in latest release HOT 1
- Add transactions support HOT 1
- A method which returns the raw DynamoDB params for creating an item
- When I do an .updateAsync() with ReturnValues I recieve a type error
- Item.set doesn't work as advertised HOT 3
- Security question?
- while updating the model getting validationException HOT 1
- Project is dead? HOT 27
- using reserved word in schema causes silent error
- Enable On-Demand Billing Mode
- Cannot use "startKey" when using an index HOT 1
- 'updatedAt' field doesn't change once set.
- ValidationException on .destroy() method HOT 3
- Update joi dependency to use @hapi/joi HOT 6
- Keep getting Error: Invalid schema content when I use define HOT 3
- Stale library? HOT 1
- Is it possible to run dynogels with version 3 of AWS
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dynogels.