【问题标题】:Generate .ics url like Basecamp in Nodejs在 Nodejs 中生成类似 Basecamp 的 .ics url
【发布时间】:2020-03-27 03:55:05
【问题描述】:
我正在研究 nodeJs(后端)和(Angular)
我想为 google 日历以及 Apple 和 Microsoft 生成一个 .ics 文件 URL 作为可下载文件。
我知道有一个节点模块 ics 并且我正在使用它,但这只会创建一个 .ics 文件,我希望它对每个用户都是唯一的,并且还希望它能够自动删除。
此外,它应该自动与添加的事件同步。
对此有何建议?
【问题讨论】:
标签:
node.js
angular
icalendar
【解决方案1】:
我一直无法找到一种方法来不断更新某人的日程安排,因为这需要不断访问某人的日历。在构建调度站点时,我使用蛮力解决方案解决了您的存储和独特文件问题。
首先,当客户端访问下载端点时,会生成一个唯一的 ics 文件并将其存储为schedule_date_client-name.ics。然后使用res.download将此唯一文件发送给用户,并使用fs.unlink(path_to_file)立即删除。
这是一个实际的例子:
try {
res.download(path, function(error){
if (error) {
console.log("Error : ", error)
}
fs.unlink(path, (error) => {
// log any error
if (error) {
console.log(error);
}
})
});
} catch (e) {
next(e);
}
我发现的最佳方法是在用户访问 /download url 端点时生成 .ics 文件。使用控制器文件中的res.download 以可下载格式发送文件。以下是有关我用于此解决方案的软件包的更多信息:
节点 .ics:https://www.npmjs.com/package/ical-generator
节点文件:https://nodejs.dev/learn/the-nodejs-fs-module
需要模块:
const ical = require('ical-generator');
const fs = require("fs");