Redux-orm: QuerySet, упорядоченный при вставке элемента - PullRequest
0 голосов
/ 22 января 2020

Я новичок в redux-orm и хочу получить множество коллекций в виде querySet (или в виде массива с помощью toModelArray ()) в том же порядке, в котором элементы были добавлены в эту коллекцию.

Это мои модели


class Node extends Model {
    static get idAttribute() {
        return 'uuid';
    }
    static get modelName() {
        return 'Node';
    }
    static get fields() {
        return {
            id: attr(),
            uuid: attr(),
            x: attr(),
            y: attr()
        }
    }

}

class Slab extends Model {

    static get modelName() {
        return 'Slab';
    }
    static get fields() {
        return {
            id: attr(),
            uuid: attr(),
            nodes: many({
                to: 'Node',
                as: 'nodes',
            }),            
        }
    }

}

Теперь я добавляю узлы в определенном порядке:

const slab = session.Slab.create({
                                uuid: "slab-1",
                                parent: "level-1",
                                altitude: 200,
                                nodes: ["node-0", "node-1", "node-2"]     
                            });

slab.nodes.toModelArray() ----> ["node-1", "node-0", "node-2"] (randomly)
I would like              ----> ["node-0", "node-1", "node-2"]  

Если я использую таблицу объединения SlabNodes, это работает, но странно использовать эти таблицы, которые следует использовать для внутреннего использования.

session.SlabNodes.first().toModelArray()  ----> ["node-0", "node-1", "node-2"] ( correctly ordered)

Я могу добавить вспомогательный метод к модели, подобной этой, но это на самом деле не элегантно.

getNodes() {
        return this.constructor._session.SlabNodes.filter( {fromSlabId: this.uuid} ).toRefArray().map( item => this.constructor._session.Node.withId(item.toNodeId) );
    }

Я делаю что-то не так, и есть ли способ добиться того, что я хочу? Спасибо.

...