canjs / can-query-logic

Perform data queries and compare queries against each other. Provides logic useful for data caching and real-time behavior.

Home Page:https://canjs.com/doc/can-query-logic.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MaybeNumber's Coercion with Queries Returns Unexpected Results

justinbmeyer opened this issue · comments

@HTMLGhozt commented on Wed Sep 19 2018

MaybeNumber's coercion has unexpected results when comparing query to query.

const queryLogic = new QueryLogic({
  identity: ["id"],
  keys: { age: MaybeNumber }
});
const unionized = queryLogic.union(
  {filter: {age: 7}},
  {filter: {age: "07"}}
);
console.log( unionized );
// expected:  {filter: {age: 7}}, received:  "{'filter':{'age':{'$in':[7,'07']}}}"

demo: https://codepen.io/TDillard/pen/MqZqzO

Similarly, MaybeNumber has unexpected results when comparing query to an instance.

  • queryLogic.filterMembers({filter: {age: 7}}, [{age: "07"}]); returns [{age: "07"}].
  • queryLogic.filterMembers({filter: {age: "07"}}, [{age: 7}]) returns an empty array.