如何从 AppMaker 中的查询对象获取排序字段和顺序?
How to get the sorting fields and order from a Query object in AppMaker?
在他们的例子中有这样的东西:
var query = app.models.Person.newQuery();
query.sorting.Name._ascending();
如何从中提取列和顺序?
我尝试了 console.log(Object.keys(query.sorting));
但它不起作用。
如果我没理解错的话,你只想获取一栏中的信息,然后进行排序。您可以为此使用基本的 javascript。这是您需要的示例:
首先,您使用 array.map 仅获取一列的信息。
var query = app.models.Person.newQuery();
var allPersons = query.run().map(function(person){return person.Name;});
现在您有一个包含 Name 列中所有名称的数组,您可以继续使用 array.sort()
对其进行排序
allPersons.sort();
这应该会为您提供按字母顺序升序排列的姓名列表。
根据我的理解,即您想return列名称和排序的列的排序顺序,我建议以下解决方案。
首先,请注意,在查询服务器脚本中使用 query.sorting.YourFieldName.
时,代码自动完成中会出现以下选项 - _ascending、_descending、_order 和 _priority。将鼠标悬停在 _order 选项上时,您会注意到这是一个 read-only 属性,它表示升序 return 为真,降序 return 为假。没有提到的是,特定列上的任何订单都不会 return 未定义。
所以下面的代码对我有用,return编辑了一个包含列名和顺序的控制台日志,尽管如果有任何排序的关系字段,这段代码就不会出现:
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');
}
}
控制台会 return "Column Name: Name, Order: Ascending"。让我们知道这是否是您真正想要的。
在他们的例子中有这样的东西:
var query = app.models.Person.newQuery();
query.sorting.Name._ascending();
如何从中提取列和顺序?
我尝试了 console.log(Object.keys(query.sorting));
但它不起作用。
如果我没理解错的话,你只想获取一栏中的信息,然后进行排序。您可以为此使用基本的 javascript。这是您需要的示例:
首先,您使用 array.map 仅获取一列的信息。
var query = app.models.Person.newQuery();
var allPersons = query.run().map(function(person){return person.Name;});
现在您有一个包含 Name 列中所有名称的数组,您可以继续使用 array.sort()
对其进行排序allPersons.sort();
这应该会为您提供按字母顺序升序排列的姓名列表。
根据我的理解,即您想return列名称和排序的列的排序顺序,我建议以下解决方案。
首先,请注意,在查询服务器脚本中使用 query.sorting.YourFieldName.
时,代码自动完成中会出现以下选项 - _ascending、_descending、_order 和 _priority。将鼠标悬停在 _order 选项上时,您会注意到这是一个 read-only 属性,它表示升序 return 为真,降序 return 为假。没有提到的是,特定列上的任何订单都不会 return 未定义。
所以下面的代码对我有用,return编辑了一个包含列名和顺序的控制台日志,尽管如果有任何排序的关系字段,这段代码就不会出现:
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');
}
}
控制台会 return "Column Name: Name, Order: Ascending"。让我们知道这是否是您真正想要的。