我正在尝试对multipart/form-dataAWS lambda 函数执行包含 pdf 文件的 POST,对文件进行一些检查,然后将文件 POST 到外部 API。
我使用带有 node.js 的无服务器框架和aws-lambda-multipart-parser插件来接收文件。
从客户端到 lambda 的文件上传工作正常,我可以将缓冲区内容打印到控制台。不起作用的部分是将文件转发到外部 API。
这是我当前的 axios 设置,用于向外部 API 发出 POST 请求:
const formData = new FormData();
formData.append("file", file.content, file.filename);
const res = await axios.post(`https://external-api.com`, formData, {
headers: { ...formData.getHeaders(), "Access-Control-Allow-Origin": "*" },
params: {
someParams: foo
}
});
Run Code Online (Sandbox Code Playgroud)
file.content实际上包含一个包含文件内容的 Buffer,但是当我发出请求时,外部 API 返回错误并且请求失败...
有趣的是,当我在本地运行无服务器功能时,整个设置有效sls offline。这可能表明 API 网关设置存在问题。
一些附加信息:
根据多部分插件的说明,我在 API 网关设置中添加了二进制数据类型:
这是 AWS Gateway 中终端节点的配置:
amazon-web-services aws-lambda aws-api-gateway serverless-framework serverless
我正在从数据库中收到一份作为 Promise 的书籍清单。
如果成功加载了初始书籍列表,则通过将它们传递给实用程序函数来进一步处理这些书籍。
实用程序函数内部是一个 forEach 循环,它循环遍历每本初始书籍,进行异步调用以获取附加信息,创建一个新书籍对象并将其添加到新书籍数组(称为updatedBooks)。
问题:我不知道如何等到 forEach 循环完成每本书以及如何返回新书数组。
目前,我只有一本更新的书,而不是全部
这是我目前的结构
controller.find(req.query)
.then(function (entities) {
awsUtil.addInfo(entities)
.then(function (updatedBooks) {
res.json({
confirmation: "success",
result: updatedBooks
})
})
.catch(function (err) {
res.json({
confirmation: "fail",
message: err
})
})
})
.catch(function (err) {
res.json({
confirmation: "fail",
message: err
})
})
Run Code Online (Sandbox Code Playgroud)
从 MongoDB 获取初始书籍的函数
find: function (params) {
return new Promise(function (resolve, reject) {
Book.find(params, function (err, books) {
if (err) {
reject(err)
return
}
console.log("Org. Books List: …Run Code Online (Sandbox Code Playgroud) 我有一个简单的REST API,我想在特定端点上实现过滤。
想象一下,我有一个这样的端点:
localhost:5000/api/items?color="red"
Run Code Online (Sandbox Code Playgroud)
哪个处理这样的请求:
const items = await Items.find({color: req.query.color})
Run Code Online (Sandbox Code Playgroud)
color存在该参数时,此方法有效。但是,如果color省略该参数,则查询将搜索coloris 为的项目undefined。这不是我所需要的行为。
就我而言,我想添加多个过滤器参数,如果它们不存在,将被忽略。我是否必须为每种情况创建一个单独的查询,或者是否可以告诉Mongoose color如果该字段为null或未定义,则不要搜索该字段(在这种情况下)?
arrays ×1
asynchronous ×1
aws-lambda ×1
express ×1
javascript ×1
loops ×1
mongodb ×1
mongoose ×1
node.js ×1
promise ×1
rest ×1
serverless ×1