如何在客户端(App Maker)创建项目时检测错误

How to detect an error in item creation on the client side (App Maker)

我正在创建一个应用程序来存储日程安排,我不希望两个日程安排具有相同的日期。为了解决这个问题,我将这段代码 (javascript) 添加到 onBeforeCreate()onBeforeSave() 事件中。

var query = app.models.DataSource.newQuery(); // New query

query.filters.date._equals = record.date; //Search for a record that has the same 

if (query.run().length) {
  throw new Error("There is already a schedule on that date"); // Throw an error
}

这对于防止重复条目非常有用,但我将如何在客户端检测到它并将其报告给用户?

这可能是一个快速修复,但我们将不胜感激 :)

谢谢!!

首先,您需要将数据源字段修改为唯一。
您需要转到 ModelName > FieldName > Advanced:

然后,当在客户端创建项目时,比方说,使用一个按钮小部件,其数据源设置为创建模式,然后在onClick事件处理器,使用如下:

widget.datasource.createItem({
  success: function(record){
    console.log(record._key);
  },
  failure: function(error){
    var err = error.toString();
    if(err.indexOf("Duplicate entry") > -1){
      alert("There is already a schedule on that date");
    } else {
      alert(error.toString());
    }
  }    
});

更多信息,建议您查阅official documentation