[GH-ISSUE #124] Sorting is always ascending when using indexes and take() #74

Closed
opened 2026-05-23 08:29:13 -06:00 by gitea-mirror · 4 comments
Owner

Originally created by @Mitsichury on GitHub (Jul 2, 2022).
Original GitHub issue: https://github.com/appy-one/acebase/issues/124

Originally assigned to: @appy-one on GitHub.

Hi :)

I've been through a weird behaviour when trying to sort data.
Here a TU that reproduce the issue.
Could you fix it please or tell me what do I do wrong please ?
Thank you very much.

`
///
const { DataReference, ObjectCollection } = require("acebase-core");
const { AceBase } = require("..");
const { createTempDB } = require("./tempdb");

describe("Query", () => {
/** @type {AceBase} /
let db;
/
* @type {{(): Promise}} */
let removeDB;

/** @type {DataReference} */
let moviesRef;

afterAll(async () => {
    await removeDB();
});

beforeAll(async () => {
    ({ db, removeDB } = await createTempDB());
    db.indexes.create(`movies`, "name");
    db.indexes.create(`movies`, "amount");
    moviesRef = db.ref("movies");
    const entry1 = {
        id: "id1",
        name: "name",
        amount: 1,
    };
    const entry2 = {
        id: "id2",
        name: "another",
        amount: 10,
    };
    const entry3 = {
        id: "id3",
        name: "name",
        amount: 100,
    };

    const movies = [entry1, entry2, entry3];
    await moviesRef.set(ObjectCollection.from(movies));
});

it("error with indexes, order and take", async () => {
    const errors = await getDataBy(["name"]);
    expect(errors.getValues().map(({ id }) => id)).toEqual(["id3", "id1"]);
});

async function getDataBy(requestFilter) {
    const query = moviesRef.query();
    query.filter("name", "in", requestFilter);
    query.sort("amount", false);
    return await query.take(20).get();
}

});
`

Originally created by @Mitsichury on GitHub (Jul 2, 2022). Original GitHub issue: https://github.com/appy-one/acebase/issues/124 Originally assigned to: @appy-one on GitHub. Hi :) I've been through a weird behaviour when trying to sort data. Here a TU that reproduce the issue. Could you fix it please or tell me what do I do wrong please ? Thank you very much. ` /// <reference types='@types/jasmine' /> const { DataReference, ObjectCollection } = require("acebase-core"); const { AceBase } = require(".."); const { createTempDB } = require("./tempdb"); describe("Query", () => { /** @type {AceBase} */ let db; /** @type {{(): Promise<void>}} */ let removeDB; /** @type {DataReference} */ let moviesRef; afterAll(async () => { await removeDB(); }); beforeAll(async () => { ({ db, removeDB } = await createTempDB()); db.indexes.create(`movies`, "name"); db.indexes.create(`movies`, "amount"); moviesRef = db.ref("movies"); const entry1 = { id: "id1", name: "name", amount: 1, }; const entry2 = { id: "id2", name: "another", amount: 10, }; const entry3 = { id: "id3", name: "name", amount: 100, }; const movies = [entry1, entry2, entry3]; await moviesRef.set(ObjectCollection.from(movies)); }); it("error with indexes, order and take", async () => { const errors = await getDataBy(["name"]); expect(errors.getValues().map(({ id }) => id)).toEqual(["id3", "id1"]); }); async function getDataBy(requestFilter) { const query = moviesRef.query(); query.filter("name", "in", requestFilter); query.sort("amount", false); return await query.take(20).get(); } }); `
gitea-mirror 2026-05-23 08:29:13 -06:00
Author
Owner

@appy-one commented on GitHub (Jul 4, 2022):

Thanks for reporting, I'll take a look!

<!-- gh-comment-id:1174089354 --> @appy-one commented on GitHub (Jul 4, 2022): Thanks for reporting, I'll take a look!
Author
Owner

@appy-one commented on GitHub (Jul 5, 2022):

I found the issue, working on a fix

<!-- gh-comment-id:1175424147 --> @appy-one commented on GitHub (Jul 5, 2022): I found the issue, working on a fix
Author
Owner

@Mitsichury commented on GitHub (Jul 6, 2022):

Super fast, thank you very much ! :D

<!-- gh-comment-id:1176600818 --> @Mitsichury commented on GitHub (Jul 6, 2022): Super fast, thank you very much ! :D
Author
Owner

@appy-one commented on GitHub (Aug 19, 2022):

I published the fix in v1.22.0!

Spread the word contribute Sponsor AceBase

<!-- gh-comment-id:1221009724 --> @appy-one commented on GitHub (Aug 19, 2022): I published the fix in v1.22.0! [![Spread the word](https://user-images.githubusercontent.com/26569719/169265089-3d593555-e1ad-4390-986b-877ac2c38a47.svg)](https://twitter.com/intent/tweet?button=&url=https://github.com/appy-one/acebase&text=I'm+using+@AcebaseRealtime+in+my+project+to+make+my+life+easier!&button=) [![contribute](https://user-images.githubusercontent.com/26569719/169265318-30c4c6a5-7c89-46a0-a7a2-ef433a8192f4.svg)](https://github.com/appy-one/acebase#contributing) [![Sponsor AceBase](https://user-images.githubusercontent.com/26569719/168233053-8e56b243-4140-40ab-9a30-4cb3cc149bfe.svg)](https://github.com/sponsors/appy-one)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/acebase#74
No description provided.