首页 > 解决方案 > 如何从 AppMaker 中的 Query 对象中获取排序字段和顺序?

问题描述

在他们的例子中有这样的东西:

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

如何从中提取列和顺序?

我试过console.log(Object.keys(query.sorting));了,但它不起作用。

标签: google-apps-scriptgoogle-app-maker

解决方案


根据我的解释,即您想返回列名和已排序的列的排序顺序,我将提出以下解决方案。

首先,请注意,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');
  }
}

控制台将返回“列名:名称,顺序:升序”。让我们知道这是否是您真正想要的。


推荐阅读