Я новичок в 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) );
}
Я делаю что-то не так, и есть ли способ добиться того, что я хочу? Спасибо.