【发布时间】:2019-05-28 19:24:01
【问题描述】:
应用制作工具具有默认验证和正则表达式验证,一旦发生错误,它们会突出显示字段。
我们需要进行自定义验证以检查模型中的重复记录。是否有任何功能可以检查验证还是我们需要执行任何脚本?
【问题讨论】:
标签: google-app-maker
应用制作工具具有默认验证和正则表达式验证,一旦发生错误,它们会突出显示字段。
我们需要进行自定义验证以检查模型中的重复记录。是否有任何功能可以检查验证还是我们需要执行任何脚本?
【问题讨论】:
标签: google-app-maker
避免数据重复的最佳方法是使用 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
}
});
【讨论】:
validationErrors 属性。
app.PageName.descendants.WidgetName...、app.currentPage.descendants.WidgetName...,或者如果你在事件处理程序中,则只是widget),但是afaik只有一种方法可以以编程方式设置错误:...widget.validationErrors = ['error text here'];