如何通过一次单击即可在另一个SQL表中创建多个新记录

时间:2019-06-13 09:41:41

标签: sql google-app-maker

我是新来的。预先感谢您的建议。

我正在开发一个应用程序,它将询问用户他们制作了多少个物品。 用户将输入一个数字。然后,我的应用程序应在名为“ Items_Made”的表中创建许多新记录。

例如该应用程序询问“您制作了多少个项目?”,用户输入“ 19”,然后在“ Items_Made”表中创建了19条新记录。

我设法收集了一些创建一个新记录的代码(如下所示),但是我希望它创建多个记录。我可能需要某种循环或“ while”功能,但不确定如何执行。

var ceateDatasource = app.datasources.Items_Made.modes.create;
var newItem = ceateDatasource.item;
ceateDatasource.createItem();

此代码成功创建1条记录。我希望它能够创建多个。

2 个答案:

答案 0 :(得分:0)

我建议创建一个下拉列表或文本框,供用户选择/输入要创建的项目数,然后将以下代码附加到“创建”按钮上:

var createDatasource = app.datasources.Items_Made.modes.create;
var userinput = Number(widget.root.descendants.YourTextboxOrDropdown.value);

for (var i = 0; i <= userinput; i++) {
  var newItem = createDatasource.item;
  createDatasource.createItem();
}

使用用户输入进行简单循环即可完成此操作。

答案 1 :(得分:0)

不建议通过客户端脚本创建很多记录,特别是如果您失去连接或应用程序被错误关闭时。我认为,处理此问题的最佳方法是通过server script处理两件事:首先,它更可靠,其次,它更快。就像官方文档中的示例一样,要创建记录,您需要执行以下操作:

// Assume a model called "Fruits" with a string field called "Name".
var newRecord = app.models.Fruits.newRecord();
newRecord.Name = "Kiwi";  // properties/fields can be read and written.
app.saveRecords([newRecord]);  // save changes to database.

上面的示例是有关如何仅创建一条记录的清晰示例。要一次创建多条记录,可以使用如下的for语句:

  function createRecordsInBulk(){
    var newRecords = [];
    for(var i=0; i<19; i++){
        var newRecord = app.models.Fruits.newRecord();
        newRecord.Name = "Kiwi " + i;
        newRecords.push(newRecord);
    }
    app.saveRecords(newRecords);
  }

在上面的示例中,您启动 newRecords ,这是一个空数组,它将负责保存所有要立即创建的新记录。然后使用for语句,生成19条新记录,并将它们推入 newRecords 。最后,循环完成后,您可以使用 app.saveRecords 并通过将 newRecords 数组作为参数来一次保存所有记录。

现在,所有这一切都在服务器端发生。显然,您需要一种从客户端调用此方法的方法。为此,您需要使用google.script.run方法。因此,在客户端,您需要执行以下操作:

  google.script.run.withSuccessHandler(function(result) {
      app.datasources.Fruits.load();
  }).createRecordsInBulk();

所有这些信息都清楚地记录在app maker official documentation site上。我强烈建议您始终先检查那里,因为我相信通过阅读文档可以更快地解决问题。