Firestore orderBy boolean and timestamp
I have a scenario where I need to paginate records in a collection based on a boolean and a timestamp field. So something like:
collection('jobs', ref =>
ref.orderBy('asap', 'desc')
.orderBy('posted')
.startAfter(offset)
.limit(this.batchSize)
asap
is a boolean and posted
is timestamp.
Basically I need to show a list of records where first records in the list are the asap=true
ones and also these should then be ordered by posted date. And the list continues with records having asap=false
and of course all these should be ordered by the posted date.
How can I achieve this ?
angular typescript firebase google-cloud-firestore angularfire2
add a comment |
I have a scenario where I need to paginate records in a collection based on a boolean and a timestamp field. So something like:
collection('jobs', ref =>
ref.orderBy('asap', 'desc')
.orderBy('posted')
.startAfter(offset)
.limit(this.batchSize)
asap
is a boolean and posted
is timestamp.
Basically I need to show a list of records where first records in the list are the asap=true
ones and also these should then be ordered by posted date. And the list continues with records having asap=false
and of course all these should be ordered by the posted date.
How can I achieve this ?
angular typescript firebase google-cloud-firestore angularfire2
1
Hello, what did you try? Does this query works?
– Renaud Tarnec
Nov 11 '18 at 14:59
My workaround was to change the boolean field into a number(priority) and I passed 2 arguments to the startAfter cursor with both the fields from last paginated record. I assume it reduced the ambiguity and seems to work as expected, although there is a small chance that there would be multiple records with same timestamp and same priority. I'm not sure if data will be correctly returned in this case.
– Rolly
Nov 12 '18 at 15:27
add a comment |
I have a scenario where I need to paginate records in a collection based on a boolean and a timestamp field. So something like:
collection('jobs', ref =>
ref.orderBy('asap', 'desc')
.orderBy('posted')
.startAfter(offset)
.limit(this.batchSize)
asap
is a boolean and posted
is timestamp.
Basically I need to show a list of records where first records in the list are the asap=true
ones and also these should then be ordered by posted date. And the list continues with records having asap=false
and of course all these should be ordered by the posted date.
How can I achieve this ?
angular typescript firebase google-cloud-firestore angularfire2
I have a scenario where I need to paginate records in a collection based on a boolean and a timestamp field. So something like:
collection('jobs', ref =>
ref.orderBy('asap', 'desc')
.orderBy('posted')
.startAfter(offset)
.limit(this.batchSize)
asap
is a boolean and posted
is timestamp.
Basically I need to show a list of records where first records in the list are the asap=true
ones and also these should then be ordered by posted date. And the list continues with records having asap=false
and of course all these should be ordered by the posted date.
How can I achieve this ?
angular typescript firebase google-cloud-firestore angularfire2
angular typescript firebase google-cloud-firestore angularfire2
edited Nov 11 '18 at 15:21
Frank van Puffelen
233k29380406
233k29380406
asked Nov 11 '18 at 14:48
RollyRolly
2318
2318
1
Hello, what did you try? Does this query works?
– Renaud Tarnec
Nov 11 '18 at 14:59
My workaround was to change the boolean field into a number(priority) and I passed 2 arguments to the startAfter cursor with both the fields from last paginated record. I assume it reduced the ambiguity and seems to work as expected, although there is a small chance that there would be multiple records with same timestamp and same priority. I'm not sure if data will be correctly returned in this case.
– Rolly
Nov 12 '18 at 15:27
add a comment |
1
Hello, what did you try? Does this query works?
– Renaud Tarnec
Nov 11 '18 at 14:59
My workaround was to change the boolean field into a number(priority) and I passed 2 arguments to the startAfter cursor with both the fields from last paginated record. I assume it reduced the ambiguity and seems to work as expected, although there is a small chance that there would be multiple records with same timestamp and same priority. I'm not sure if data will be correctly returned in this case.
– Rolly
Nov 12 '18 at 15:27
1
1
Hello, what did you try? Does this query works?
– Renaud Tarnec
Nov 11 '18 at 14:59
Hello, what did you try? Does this query works?
– Renaud Tarnec
Nov 11 '18 at 14:59
My workaround was to change the boolean field into a number(priority) and I passed 2 arguments to the startAfter cursor with both the fields from last paginated record. I assume it reduced the ambiguity and seems to work as expected, although there is a small chance that there would be multiple records with same timestamp and same priority. I'm not sure if data will be correctly returned in this case.
– Rolly
Nov 12 '18 at 15:27
My workaround was to change the boolean field into a number(priority) and I passed 2 arguments to the startAfter cursor with both the fields from last paginated record. I assume it reduced the ambiguity and seems to work as expected, although there is a small chance that there would be multiple records with same timestamp and same priority. I'm not sure if data will be correctly returned in this case.
– Rolly
Nov 12 '18 at 15:27
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249860%2ffirestore-orderby-boolean-and-timestamp%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249860%2ffirestore-orderby-boolean-and-timestamp%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Hello, what did you try? Does this query works?
– Renaud Tarnec
Nov 11 '18 at 14:59
My workaround was to change the boolean field into a number(priority) and I passed 2 arguments to the startAfter cursor with both the fields from last paginated record. I assume it reduced the ambiguity and seems to work as expected, although there is a small chance that there would be multiple records with same timestamp and same priority. I'm not sure if data will be correctly returned in this case.
– Rolly
Nov 12 '18 at 15:27