【问题标题】:How to get record's primary key value on saving in manual mode?如何在手动模式下获取记录的主键值?
【发布时间】:2019-02-18 12:28:12
【问题描述】:

我有一个处于手动保存模式的模型和一个处于创建模式的表单。一旦我添加详细信息并单击提交,它应该会创建记录并 提醒类似“您的请求使用 id=7 注册”,其中 id 是 id(主键)。

注意主键是自动递增的,并且是动态生成的。

在手动保存模式下,我正在使用 saveChanges 保存记录,但看到错误:

严重:记录 RecordKey{key=private$2, model 键=1ymdoCYoHKEGpumlXveKKZh_57jUjd9OY|7LyXBUY46K9Jl6GRCy1DeL32kXmnGHis} 已删除。失败:对象的 getProperty。 (UserCreationRequest:12:37) 在 createUCR (UserCreationRequest:11:19) 在 UserCreationRequest.Container.UserCreationRequestPanel.UserCreationRequestPanelFooter.UserCreationRequestPanelSubmitButton.onClick:1:1

(在错误 12:37 指向记录._key)

代码:(提交按钮的执行 OnClick)

   widget.datasource.saveChanges(function(record) {
   alert('Your request is registered with id='+record._key);
   }

有人可以请教如何在手动模式下获取主键吗?

附加信息参考:

上面的代码在其他地方为我工作了一些其他模型。但是对当前模型不起作用,是不是因为当前模型有关系?

我在当前模型的数据源部分添加了一个新数据源 并通过使用它工作正常。但是为什么使用原始版本不能正常工作?

另外仅供参考,this 是一个类似的问题,但它没有帮助,因为它是一种不同的方法。我热衷于使用小部件本身进行保存。

【问题讨论】:

  • 更多元评论:我不确定这应该有 [google-apps-script] 标签。 App Maker 确实使用 Apps Script 作为后端,但功能似乎非常不同。 另外,我很想玩 App Maker。
  • @chris 有 14 天的免费试用期。你为什么不去玩呢?
  • 从文档中我看到 saveChanges 没有带有记录的回调函数,但是它在其他地方对我有用。无论如何,如果没有,那么有人可以建议如何解决这个问题吗?

标签: google-apps-script google-cloud-platform google-app-maker


【解决方案1】:

首先,我们需要了解创建模式和普通模式是不一样的。清楚这一点后,我们可以执行以下操作:

假设数据源名称为 MYDATASOURCE,则表单数据源应为 MYDATASOURCE(create)。然后,在 insert form 内的 submit 按钮小部件的 onClick 事件上,使用以下命令:

widget.datasource.createItem(function(record){
  app.datasources.MYDATASOURCE.saveChanges(function(){
    console.log(record._key);
  });
});

【讨论】:

  • 只是为了确保我们在同一页面上,创建模式是指数据源处于创建模式,即为表单设置了 MYDATASOURCENAME(create)。我用你的代码得到了record._key = null。我认为这是因为由于数据源处于手动模式,因此创建项会创建记录,但不会将其保存到数据源中。
  • @abhishek186 是的。所以基本上,表单将以 MYDATASOURCENAME(create) 作为数据源。当您单击提交按钮时,首先您必须在(创建)数据源上创建项目,一旦创建项目,您需要在非(创建)数据源上保存更改,即仅 MYDATASOURCENAME。它对我来说很好。
  • 还不适合我。当我打印record._key时,它显示空值。当我打印除主键之外的字段名称时,例如record.FirstName,我得到了值。所以看起来记录已创建但在保存之前没有密钥。在 saveChanges 中,我们正在打印记录,但该记录由 createItem 返回,它不包含任何键。
  • @abhishek186 您的设置有问题。它在不同的项目中对我很有用。祝你好运。
  • 在这种情况下,我想从其他用户那里得到确认。如果它为你工作而不为我工作,可能会有一些不同的设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
相关资源
最近更新 更多