如何使用 javascript 数据创建 md 文件到 github

How to create a md file using javascript data onto github

我正在通过 Netlify 表单获取表单提交数据。

我希望能够在提交表单时在 github 上创建一个包含相同数据的 md 文件。

到目前为止,在我的 submission-created.js 函数(由客户端提交触发)中,我正在像这样获取客户端的提交数据:

exports.handler = async function(event, context, callback) {

  const data = JSON.parse(event.body).payload.data;

  let date = new Date().toUTCString().replace(/[\s|,|:]/g, "-");
  date = date.substring(5, date.length);

  let courtData = 
`---
name: Automatic-file-${date}
location:
lat: ${data?.latitude}
lng: ${data?.longitude}
email: ${data?.email}
byhoopers: ${data?.byhoopers ? data?.byhoopers : false}
openUse: ${data?.openUse}
openTime: ${data?.openTime ? data?.openTime : "unknown"}
social: ${data?.social}
image: ${data?.file?.url}
formcourt: true
---
${data?.info ? data?.info : ""}
![](${data?.file2?.url ? data?.file2?.url : ""})
![](${data?.file3?.url ? data?.file3?.url : ""})
![](${data?.file4?.url ? data?.file4?.url : ""})
![](${data?.file5?.url ? data?.file5?.url : ""})
`;

  return { 
    statusCode: 200,
    body: JSON.stringify(data),
  };
};

工作正常,但现在我需要将此数据保存到 md 文件并将其推送到 github。

我正在做类似的事情,但正在努力进行下一步:

let githubContent = Buffer.from(courtData).toString('base64');

let courtInfo = JSON.stringify({
    message: `new court file ${date}`,
    content: githubContent,
});

let githubPush = {
        method: "put",
        url: `https://api.github.com/repos/*****${date}.md`,

    headers: {
        Authorization: "*********",
        "Content-Type": "application/json",
    },
    data: courtInfo,
};

Axios 是这样完成工作的:

await axios(githubPush)
    .then(function (response) {
        console.log(JSON.stringify(response.data));
    })
    .catch(function (error) {
        console.log(error);
    });

return {
    statusCode: 200,
    body: JSON.stringify(data),
};

进一步说明: 此外,发现使用 Netlify Secrets 是隐藏 guthub 令牌以提高安全性的更好方法。

const API_SECRET = process.env.API_SECRET;

然后在 root 上创建一个 .env 文件 API_SECRET = *****,将 .env 添加到 .gitignore 最后在 Netlify 的平台上创建 environment variables at ENVIRONMENT 在网站的 Build & Deploy 选项卡中。