| Bug #93839 | JavaScript Date values are converted to empty objects in new documents | ||
|---|---|---|---|
| Submitted: | 7 Jan 2019 15:33 | Modified: | 25 Feb 2019 23:38 |
| Reporter: | Rui Quelhas | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector for Node.js | Severity: | S3 (Non-critical) |
| Version: | 8.0.13 | OS: | Any |
| Assigned to: | Rui Quelhas | CPU Architecture: | Any |
| Tags: | collectionadd, conversion, date, docstore | ||
[25 Feb 2019 23:38]
Philip Olson
Posted by developer: Fixed as of the upcoming MySQL Connector/Node.js 8.0.16 release, and here's the changelog entry: Date values in documents were converted to empty objects when inserted into a collection. Thank you for the bug report.

Description: As a user, I expect to be able to insert documents containing JavaScript Date values into a given collection. Those values need to be converted somehow to something that is supported by the JSON data type, such as an ISO string (similar to what happens when calling JSON.stringify()). However, right now, those Date values are being converted into empty objects, which is not helpful. How to repeat: Assuming there is a `mySchema.myCollection` available: mysqlx.getSession(config) .then(session => { var collection = session.getSchema('mySchema').getCollection('myCollection') return collection.add({ _id: '1', name: 'foo', createdAt: new Date() }) .execute() .then(() => { return collection.find() .execute(console.log) // { _id: '1', name: 'foo', createdAt: {} } }) }) Suggested fix: Apply the same conversion rules used by JSON.stringify() when encoding Mysqlx.Crud.Insert operation.