node-ottoman
node-ottoman copied to clipboard
Check the model type when using `findById`
I'm not quite sure if it's a bug, but the behavior of ottoman doesn't match my assumption.
I have a use case that uses uuid without prefix as the key of a document, and multiple models reside in a single bucket/scope/collection.
The problem is that when applying an Id of model A to ModelB.findById, it just returns the document of model A.
I know it's not expected to apply the wrong Id to the model.findById, but it would be ideal if it can return a DocumentNotFoundError instead of a data from other models.
Attaching a minimum reproducible code as follows, https://gist.github.com/xavierchow/a995771877a9bac3ff56e192ae3aef2f
I'm wondering if an improvement with checking the model type for findById makes sense?
@xavierchow probably a bug like you had mentioned. @gsi-alejandro can you please review and provide a feedback ?
hi @xavierchow
We need to discuss it. This issue will never arise while using scopes and collections.
The problem is: to ensure this now we have the metadata _type, this way we know if the document belongs to the model that requests it maybe in the future, we have to remove permanently or by a flag option the _type, then this implementation will not work anymore.
@gsi-alejandro
IMHO, the Ottoman as the ODM maintains the mapping between the Model to the documents in the DB.
It's strange that I can use A.findById to get a B document.
Good to know you may have a plan about the metadata _type, but how to distinguish the models (by collection separation or by metadata _type) doesn't block the improvement that brings the concept integrity, what do you think?
Hi @xavierchow, thank you for your feedback.
We will provide a solution for its next release (check for doc _type against the model)
released on version 2.2.1