You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For every property defined as {type: 'string', mongodb: {dataType: 'ObjectID'}}, including properties defined in nested/embedded models:
When the MongoDB connector returns data from database, it converts ObjectID values to strings.
When the MongoDB connector writes data to database, it converts string values to ObjectID
When the MongoDB connector queries database (think of filter.where, but also findById and replaceById), it converts string values to ObjectID. The conversion is applied to non-trivial conditions too, e.g. {where: {id: { inq: ['my-objectid-1', 'my-objectid-2'] }}}
Documentation page for MongoDB users explaining extra configuration needed
MongoDB is tricky - see #1875
ObjectID
type for primary keys.ObjectID
is represented as astring
when converted to JSON'some-id' !== ObjectID('some-id')
.As a result, both PK and FK properties must use
ObjectID
as the type, and coercion must be applied where necessary.Ideally, I'd like LB4 to define MongoDB PK and FKs as follows:
{type: 'string', mongodb: {dataType: 'ObjectID'}}
Even better,
dataType: 'ObjectID'
should be automatically applied by the connector for PK and FKs referencing ObjectID PKs.For example:
For v1, I suppose we can ask developers to provide dataType manually.
With this setup in place,
id
andcategoryId
properties should be always returned as strings from DAO and connector methods.Related discussions
dataType: 'mongodb'
: feat: adds mongodb: {dataType: 'ObjectID'} to model properties loopback-connector-mongodb#517 and fix: ObjectID data type preservation loopback-connector-mongodb#525Acceptance criteria
For every property defined as
{type: 'string', mongodb: {dataType: 'ObjectID'}}
, including properties defined in nested/embedded models:filter.where
, but alsofindById
andreplaceById
), it converts string values to ObjectID. The conversion is applied to non-trivial conditions too, e.g.{where: {id: { inq: ['my-objectid-1', 'my-objectid-2'] }}}
Documentation page for MongoDB users explaining extra configuration needed
Blog post announcing the improvements
Tasks
The text was updated successfully, but these errors were encountered: