Как получить поля сортировки и порядок из объекта Query в AppMaker? - PullRequest
0 голосов
/ 21 мая 2019

В их примерах есть что-то вроде этого:

var query = app.models.Person.newQuery();
query.sorting.Name._ascending();

Как мне извлечь из этого столбец и заказать?

Я пытался console.log(Object.keys(query.sorting));, но это не работает.

Ответы [ 2 ]

2 голосов
/ 21 мая 2019

Исходя из моей интерпретации, которая заключается в том, что вы хотите вернуть имя столбца и порядок сортировки столбца, который имеет сортировку, я бы предложил следующее решение.

Во-первых, обратите внимание, что при использовании query.sorting.YourFieldName. в сценарии сервера запросов в автозаполнении кода представлены следующие параметры: _ascending, _descending, _order и _priority. При наведении указателя мыши на выбор _order вы заметите, что это свойство доступно только для чтения, и в нем говорится, что возрастающий порядок вернет true, а убывающий порядок - false. То, что не упомянуто, - то, что никакой заказ на определенном столбце не возвратит неопределенный.

Таким образом, следующий код работал для меня и возвратил консольный журнал с именем столбца и порядком, хотя этот код не берется, если есть какие-либо поля отношения, которые отсортированы:

var query = app.models.Person.newQuery();
query.sorting.Name._ascending();
var fields = app.metadata.models.Person.fields;
for (var i in fields) {
  //if statement first checks column is not a foreign key and that column has sorting 
  if(i.indexOf('_fk') === -1 && query.sorting[i]._order !== undefined) {
    console.log(query.sorting[i]._order ? 'Column Name: ' + i + ', Order: Ascending' : 'Column Name: ' + i + ', Order: Descending');
  }
}

Консоль выдаст «Имя столбца: Имя, Порядок: По возрастанию». Дайте нам знать, если это то, что вы на самом деле ищете.

1 голос
/ 21 мая 2019

Если я правильно понимаю, вы хотите получить информацию только в одном столбце, а затем отсортировать ее.Вы можете использовать базовый JavaScript для этого.Вот пример того, что вам нужно:

Сначала вы используете array.map , чтобы получить только информацию для одного столбца.

var query = app.models.Person.newQuery();
var allPersons = query.run().map(function(person){return person.Name;});

Теперь, когда у вас естьмассив, содержащий все имена в столбце Name , вы можете продолжить его сортировку, используя array.sort ()

allPersons.sort();

Это должно дать вам списокимен отсортированных в алфавитном порядке в порядке возрастания.

...