【问题标题】:Google AppMaker: Fetch a MAX valueGoogle App Maker:获取 MAX 值
【发布时间】:2018-02-22 21:50:40
【问题描述】:

我无法从 AppMaker 中的数字字段中获取最大值。该字段由 1 及以上的唯一整数填充。在 SQL 中,我会这样问:

SET @tKey = (SELECT MAX(ID) FROM GiftCard);

到目前为止,在 AppMaker 中,我已经完成了以下操作(在本论坛其他贡献者的帮助下),它返回 tKey = "NaN":

var tKey = google.script.run.MaxID();

function MaxID() {
  var ID_START_FROM = 11000;
  var lock = LockService.getScriptLock();
  lock.waitLock(3000);
  var query = app.models.GiftCard.newQuery();
  query.sorting.ID._descending();
  query.limit = 1;
  var records = query.run();
  var next_id = records.length > 0 ? records[0].ID : ID_START_FROM;
  lock.releaseLock();
  return next_id;
}

AppMaker 中还有一个 maxValue() 函数。但是,它似乎不能以我使用它的方式工作。如果 maxvalue() 更好用,请显示:-)

【问题讨论】:

    标签: max google-app-maker


    【解决方案1】:

    您似乎正在寻找自动递增字段的方向。实现它的正确方法是使用Cloud SQL database。 MySQL 将为您提供更多配置 ID 的灵活性:

    ALTER TABLE GiftCard AUTO_INCREMENT = 11000;
    

    如果您强烈希望坚持使用 Drive Tables,您可以尝试按如下方式修复您的脚本:

    google.script.run
      .withSuccessHandler(function(maxId) {
        var tKey = maxId;
      })
      .withFailureHandler(function(error) {
        // TODO: handle error
      })
      .MaxID();
    

    作为旁注,我还建议将您的 ID 在 onBeforeCreate 模型事件中设置为额外的安全层,而不是将其传递给客户端并回读,因为它可能被恶意用户修改。

    【讨论】:

      【解决方案2】:

      您可以尝试使用Math.max()。考虑下面的例子:

      function getMax() {
      
        var query = app.models.GiftCard.newQuery();
        var allRecords = query.run();
      
        allIds = [];
        for( var i=0; i<allRecords.length;i++){
           allIds.push(allRecords[i].ID); 
        }
      
        var maxId = Math.max.apply(null, allIds);
        return maxId;
      
      }
      

      希望对你有帮助!

      【讨论】:

      • 查询表中的所有记录会对性能产生重大影响。
      【解决方案3】:

      谢谢你的例子! Math.max 返回一个未定义的值。由于这个简单的案例是一个“大”问题,我将用另一种方式解决这个问题。该值仅作为序列的起始值。一个 SQL 库更好是的!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多