【问题标题】:AWS lambda edit html template with data from DynamoDBAWS lambda 使用来自 DynamoDB 的数据编辑 html 模板
【发布时间】:2018-05-25 10:55:32
【问题描述】:

我正在尝试将从 DynamoDB 数据库检索到的数据插入到存储在 S3 上的 HTML 模板中(本质上是填写 HTML 表单上的空白)。我对 JavaScript 不是很精通,所以我不确定从哪里开始。

到目前为止,我已经能够从 S3 检索 HTML 文档并转换为 UTF8 字符串...这可能不是必需的,但我只是在练习使用 Lambda 与 S3 对话。

我是否需要使用第三方库才能使 HTML 包含我可以更改的变量?或者我可以以某种方式更改 ID'd ref's 的内部 HTML 吗?

任何帮助将不胜感激!

编辑:这里的主要目标是获取用户输入(存储在 DynamoDB 上),填写 HTML 表单上的空白,并将 HTML 转换为 PDF 文档。

如果有人能想到更好的方法来将用户输入添加到文本模板,然后将其转换为 PDF,我愿意接受任何建议!

谢谢

【问题讨论】:

  • 重写静态页面远非理想,但如果这是您唯一的选择,那么您可以考虑将 DynamoDB 数据写入 S3 中的 JSON 文件并让您的主线 HTML/JS 从该 JSON 中读取在运行时创建文件并渲染表格或任何您想要可视化数据的可视元素。
  • @jarmod 我应该注意,我使用 HTML 的唯一原因是因为我的最终目标是将 html 转换为 pdf 文档。 (更新的问题)。不过,我会尝试一下您的想法,这听起来很有希望。谢谢!

标签: javascript html amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

对于您的用例,使用轻量级 HTML 模板库会更加结构化和可维护。

例如使用Lodash.js,您可以执行以下操作。

_.template([string=''], [options={}])

在这里,您可以使用以下标记在 html 文件中定义变量,然后读取文件内容并与从 DynamoDB 检索的数据绑定作为选项,以返回最终的 HTML 字符串,您可以将其保存回 S3 中的文件。

<div>
    <h1>My name is <%- name %></h1>
    <p>I like <%- hobbies %> but hate being a <%- occupation %></p> 
</div>

var filledHTML = _.template("HTML string'', { name: "John", hobbies: "Reading", occupation: "developer"})

注意:为您的 lambda 使用 lodash.template npm。

npm i --save lodash.template

【讨论】:

  • 我正在考虑使用 EJS,但在阅读您的评论之前,我不确定模板化是否可行。我也会调查 Lodash。感谢您的帮助!
  • 为了记录,我最终使用了 Lodash。 lambda 函数使用比您的示例更短的 html 字符串,花了将近 4 秒...如果我要批量处理并填写大量模板,我可能需要重新考虑我的方法。并检查我的银行帐户。
  • 这个主要是针对主机启动的。您是否检查了后续请求?是否需要相同的时间?还可以尝试增加内存,看看它是否低于 1 秒。
猜你喜欢
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
相关资源
最近更新 更多