将数据附加到 node.js 中的 formData ...我发布到我的 api 的数据总是显示为空?
Posted
技术标签:
【中文标题】将数据附加到 node.js 中的 formData ...我发布到我的 api 的数据总是显示为空?【英文标题】:Appended data to formData in node.js...the data which i am posting to my api is always showing null? 【发布时间】:2021-03-21 12:08:03 【问题描述】:最近我试图通过异步进程将大量 html 表单值附加到 MongoDB 数据库
这个 const createproperty 是我在数组中获取的 MongoDB 字段
const createProperty = ['propertyType',
'propertyName',
'bhkType',
'ownershipType',
'builtUpArea',
'propertyAge',
'floorType',
'floorNumber',
'numberOfFloors',
'city',
'expectedPrice',
]
.. 这些 id 是我放入数组中的 HTML 表单中的一些 id
const myids = ['#thisPropertyType',
'#thisPropertyName',
'#thisBhk',
'#thisOwnerShip',
"#thisArea",
'#thisAge',
'#thisFloor',
'#thisFloorNo',
'#thisTotalFloor',
'#thisCity',
'#thisEp', ]
这个新属性会给我 Html 表单的值,所有的值都以数组的形式存储,这个 for 循环工作得很好,完美地给了我所有的表单值
const newProperty = new Array();
for(var i=0;i<myids.length;i++)
newProperty[i] = $(myids[i]).val();
const form = new FormData();
for(var i=0;i<newProperty.length;i++)
form.append(createProperty[i],newProperty[i]);
await createData(form);
这是跟随异步进程的函数
export const createData = async (data) =>
try
for (var value of data.values())
console.log(value);
const res = await axios(
method: 'POST',
url: '/api/v1/myapi',
data
);
if(res.data.status==='success')
alert('success');
console.log(data);
catch(err)
alert('error');
我 console.logged 来自 createdata 函数的值,它完美地为我提供了值,但它没有将值推送到 mongodb 服务器,当我查看集合时,有一个文档已创建但它没有里面的数据..
请帮助我哪里做错了,我不知道我哪里做错了..
非常感谢你帮助我!!
【问题讨论】:
【参考方案1】:axios 期望数据是 JSON 对象而不是 FormData
这将使用来自 createProperty
数组的键将正文构造为 JSON
const data = ;
myids.forEach((id, index) =>
data[createProperty[index]] = $(myids[i]).val();
)
那么你可以直接通过axios
发送这些值
await createData(data)
【讨论】:
我必须告诉你......上帝就是你......非常感谢你拉米 你好,我正在尝试使用上面相同的代码发送图像,但不知何故它显示了这个错误..请你帮我..错误:图像:转换为 [字符串] 失败路径“images”图像中的“[]”是架构字段以上是关于将数据附加到 node.js 中的 formData ...我发布到我的 api 的数据总是显示为空?的主要内容,如果未能解决你的问题,请参考以下文章
docker-compose 用于将 VS Code 中的 node.js 调试器附加到 WSL docker 中的节点进程
Node.js 和 Nodemailer:我们可以将 PDF 文档附加到电子邮件中吗?
使用 sendgrid 和 node.js 将日志文件附加到电子邮件