gpt4 book ai didi

node.js - sails.js 中的部分 POSTED 数据(不时)

转载 作者:搜寻专家 更新时间:2023-10-31 23:11:56 26 4
gpt4 key购买 nike

我有一个生产服务器 (ubuntu),用户在其中填写并发送表单(多部分),以创建或更新记录。现在,有时当我尝试使用 req.allParams() 时,我会得到一个包含不完整数据的对象。

假设这是我通常得到的:

data: {
id: '58155',
name: 'The Gallery Name',
email: 'gallery@gmail.com',
phone: '(+54911)68460005',
url: 'www.theurl.com',
workingHours: 'Tuesday - Friday 3 - 8 pm',
artists: ['58350', '15503', '58346', '58347', '58348', '58349'],
locations: [{
country: 1,
state: null,
city: 45,
zip: '33175',
address: '' }
],
showOnGuide: true,
preferredLanguage: 'en',
events: [1, 4, 5]
}
};

但有时我得到:

   data: {
id: '58155',
name: 'The Gallery Name',
email: 'gallery@gmail.com',
phone: '(+54911)68460005',
url: 'www.theurl.com',
workingHours: 'Tuesday - Friday 3 - 8 pm',
artists: ['58350', '15503', '58346', '58347', '58348', '58349']
}
};

我已经检查了表单并且它们是正确的,所以唯一明显的是只有最后一个键(表单字段)丢失了,所以我假设它可能与某些 POST 超时有关?

需要说明的是,这就是我获取数据的方式,在我完成任何格式化之前,甚至在 sails/node_modules/skipper/index.js 中放置日志

>
/// .. some code
MultipartBodyParser(req, res, function(err) {
if (err) return next(err);
console.log(req.body);
/// ... some code
}

不时显示部分信息。我没有在我的本地机器上看到这种行为,但正如我所说,这种情况很少见,大约每 30 次出现 1 次,但对于客户端丢失已发送的数据来说仍然是灾难性的。

这似乎是风 sails 、快车或船长的问题。

几天来我一直在尝试调试它,这是我得到的最接近的调试结果,因为一开始我不知道它发生的原因或时间,现在我知道表单已正确发送,但 sails 要么接收到它不完整,要么解析不正确。

有人遇到过类似的问题吗?欢迎任何有助于解决此问题的想法。

版本:

  • Node 0.12
  • 风 sails 0.11.3

注意无论是否上传文件都会发生这种情况

编辑: 通过使用网络管理器 (NetBalancer),我尝试将上传速度尽可能降低 1 字节/秒,但我没有得到奇怪的行为,所以它没有似乎与网络上传速度慢有关,至少从手动测试来看,我也不确定 NetBalancer 的可靠性如何。

更新:更新 sails 到 0.12.1 和 node 到 5.8.0,但问题仍然存在。

谢谢

最佳答案

我意识到问题出在哪里了。它几乎只出现在低上传速度的连接上,特别是在上传图像时,问题是船长在检测到文件输入时如何处理表单数据(似乎即使输入文件为空也会发生)它关闭文本输入流,所以他们永远不会被捕获。现在,解决方案是以文件输入放在所有其他输入之后的方式格式化您的表单(因为 html 规范规定浏览器必须按顺序发送输入),但如果不做一些繁重的工作,并不总是可以做到这一点样式更改,所以我想出的解决方案是使用这个小片段:

(function () {
var $form = $('form[enctype="multipart/form-data"]');
var $fileInputs = $($form.find('input[type="file"]'));
$form.submit(function() {
$fileInputs.detach();
$form.append($fileInputs);
})
})();

它将文件输入从表单中分离出来,并将它们附加在末尾,因此它们总是最后发送。

我相信 sails 有关于输入顺序的重要性的注释,但它很容易被忽略,他们应该在他们的主页上放置一个关于这个的巨大警告......

关于node.js - sails.js 中的部分 POSTED 数据(不时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35967241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com