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
has prThere is an open pull request (in this repo or elsewhere) related to this issue.mongoIssue only occurs when using MongoDBormRelated to models, datastores, orm config, Waterline, sails-hook-orm, etc.
No additional top-level dependencies present. Confirmed with merely sails, sails-hook-orm and sails-mongo.
There appears to be an issue where the sails-mongo Waterline adapter fails to transform input query filter values to Mongo ObjectId instances where appropriate, instead leaving such values as simple strings.
This occurs in cases where the target field appears to be an appropriate candidate (a primary key) for normalisation to ObjectId and only affects the following operators:
This results in an inability to perform a number of useful queries against PK fields (such as paging on document IDs) and feels inconsistent with the behaviour of the other Waterline query operators supported by sails-mongo, as well as other adapters.
@Rua-Yuki Thanks for posting! We'll take a look as soon as possible.
In the mean time, there are a few ways you can help speed things along:
look for a workaround. (Even if it's just temporary, sharing your solution can save someone else a lot of time and effort.)
tell us why this issue is important to you and your team. What are you trying to accomplish? (Submissions with a little bit of human context tend to be easier to understand and faster to resolve.)
make sure you've provided clear instructions on how to reproduce the bug from a clean install.
double-check that you've provided all of the requested version and dependency information. (Some of this info might seem irrelevant at first, like which database adapter you're using, but we ask that you include it anyway. Oftentimes an issue is caused by a confluence of unexpected factors, and it can save everybody a ton of time to know all the details up front.)
if appropriate, ask your business to sponsor your issue. (Open source is our passion, and our core maintainers volunteer many of their nights and weekends working on Sails. But you only get so many nights and weekends in life, and stuff gets done a lot faster when you can work on it during normal daylight hours.)
let us know if you are using a 3rd party plugin; whether that's a database adapter, a non-standard view engine, or any other dependency maintained by someone other than our core team. (Besides the name of the 3rd party package, it helps to include the exact version you're using. If you're unsure, check out this list of all the core packages we maintain.)
Please remember: never post in a public forum if you believe you've found a genuine security vulnerability. Instead, disclose it responsibly.
Regarding one use case which this issue prevents, we are left unable to page based on document IDs or use said IDs as tie-breakers when paging on fields that may not be unique.
The following query will not return results as expected:
// Try and find the next item after our input.Post.find({id: {'>': '5e9a49923a48025cccdaee43',},}).sort('id ASC').limit(1).then((res)=>{// Logs "Found []"sails.log.debug('Found',res);});
The expected result of this query is to return the item directly after our input ID, if any:
johnabrams7
added
mongo
Issue only occurs when using MongoDB
orm
Related to models, datastores, orm config, Waterline, sails-hook-orm, etc.
has pr
There is an open pull request (in this repo or elsewhere) related to this issue.
labels
Jul 7, 2020
has prThere is an open pull request (in this repo or elsewhere) related to this issue.mongoIssue only occurs when using MongoDBormRelated to models, datastores, orm config, Waterline, sails-hook-orm, etc.
Node version: v8.17.0
Sails version (sails): 1.2.3
ORM hook version (sails-hook-orm): 2.1.1
DB adapter & version: [email protected]
No additional top-level dependencies present. Confirmed with merely
sails
,sails-hook-orm
andsails-mongo
.There appears to be an issue where the
sails-mongo
Waterline adapter fails to transform input query filter values to MongoObjectId
instances where appropriate, instead leaving such values as simple strings.This occurs in cases where the target field appears to be an appropriate candidate (a primary key) for normalisation to
ObjectId
and only affects the following operators:<
<=
>
>=
For instance, the following Waterline query:
Will ultimately issue this to MongoDB:
Rather than the expected query of:
This results in an inability to perform a number of useful queries against PK fields (such as paging on document IDs) and feels inconsistent with the behaviour of the other Waterline query operators supported by
sails-mongo
, as well as other adapters.I've built a mostly minimal test case at Rua-Yuki/waterline-mongo-objectid-comparison-funk, which also contains more information about this issue.
A quick fix exists in the fpm-git/sails-mongo fork.
The text was updated successfully, but these errors were encountered: