我正在使用 formidable 解析传入文件并将其存储在 AWS S3 上
当我调试代码时,我发现 formidable 首先将其保存到磁盘的 /var/folders/ 中,并且随着时间的推移,一些不必要的文件会堆积在磁盘上,这可能会导致以后出现大问题。
我在没有完全理解代码的情况下使用代码是非常愚蠢的,现在
我必须弄清楚如何在将解析的文件保存到 S3 后删除它,或者将其保存到 s3 而不将其存储在磁盘中。但问题是我该怎么做?
如果有人能指出我正确的方向,我将不胜感激
这就是我处理文件的方式:
import formidable, { Files, Fields } from 'formidable';
const form = new formidable.IncomingForm();
form.parse(req, async (err: any, fields: Fields, files: Files) => {
let uploadUrl = await util
.uploadToS3({
file: files.uploadFile,
pathName: 'myPathName/inS3',
fileKeyName: 'file',
})
.catch((err) => console.log('S3 error =>', err));
}
Run Code Online (Sandbox Code Playgroud) 这就是我查询更新行的方式,它的工作原理是:
const [rows, meta] = await db.query(
`
UPDATE
Portfolio
SET
title = ?,
infoText = ?,
devPeriod = ?,
tags = ?
WHERE
id = ?
`,
[title, infoText, Number(devPeriod), tags, Number(portfolioId)]
);
return rows;
Run Code Online (Sandbox Code Playgroud)
但有时根据用户的需要,我必须查询以仅更新特定列。例如,用户可能只想编辑 devPeriod 或标签和 infoText。我怎样才能做到这一点?
我正在使用 knex.js 编写查询,但我被 orWhere 困住了。
我需要这样的查询:
select
count(*)
from
`Project`
where
`Project`.`createdAt` >= '2019-11-12'
and
`Project`.`createdAt` <= '2020-11-19'
and
((`Project`.`productType` = 1)
or
(`Project`.`productType` = 2))
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这就是我得到的:
select
count(*)
from
`Project`
where
`Project`.`createdAt` >= '2019-11-12'
and
`Project`.`createdAt` <= '2020-11-19'
or
(`Project`.`productType` = 1)
or
(`Project`.`productType` = 2)
Run Code Online (Sandbox Code Playgroud)
or请注意,我想要用两个 'and来代替第一个or
这是代码:
builder.count('*')
.from('Project')
.where('Project.createdAt', '>=', '2019-11-12')
.where('Project.createdAt', '<=', '2019-11-19')
.orWhere({'Project.productType': 1})
.orWhere({'Project.productType': 2})
Run Code Online (Sandbox Code Playgroud)
将不胜感激任何帮助