Git Product home page Git Product logo

Comments (8)

jkav77 avatar jkav77 commented on August 15, 2024

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.

endymion00 avatar endymion00 commented on August 15, 2024

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.

aneilbaboo avatar aneilbaboo commented on August 15, 2024

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.

jkav77 avatar jkav77 commented on August 15, 2024

Closing as stale

from dynogels.

aneilbaboo avatar aneilbaboo commented on August 15, 2024

@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.

jkav77 avatar jkav77 commented on August 15, 2024

@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.

aneilbaboo avatar aneilbaboo commented on August 15, 2024

Makes sense. I'll create a new issue and add a script that demonstrates the problem.

from dynogels.

aneilbaboo avatar aneilbaboo commented on August 15, 2024

Actually, it looks like the issue is fixed in the latest version.

from dynogels.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.