首页 文章

Google App制造商验证

提问于
浏览
0

应用程序制造商具有默认验证和正则表达式验证,一旦发生错误,它将突出显示字段 .

我们要求进行自定义验证以检查模型中的重复记录是否有任何函数来检查验证或我们是否需要执行任何脚本 .

1 回答

  • 1

    避免数据重复的最佳方法是使用Cloud SQL对表执行“唯一”约束 .

    如果您不想使用Cloud SQL并希望使用 Drive Tables ,则可以使用锁定,查询和模型事件手动模拟唯一约束:

    // onCreate model event (actually it is onBeforeCreate)
    // this events accepts about-to-create record as parameter
    var lock = LockService.getScriptLock();
    lock.waitLock(5000);
    
    var query = app.models.MyModel.newQuery();
    query.filters.SomeField._equals = record.SomeField;
    
    var records = query.run();
    
    if (records.length > 0) {
      throw new Error('Record with SomeField value equal to ' + record.SomeField +
                       ' already exists.');
    }
    
    lock.releaseLock();
    

    您需要 lock 来防止其他线程同时创建违反您的唯一约束的记录 .

    然后你可以在 createItem 函数回调中处理UI上的错误:

    // create button onClick handler
    widget.datasource.createItem({
      success: function(record) {
        // TODO
      },
      failure: function(error) {
        // TODO
      }
    });
    

相关问题