我正在使用快递和闷热。在下文中,文件是随机顺序的。文件的顺序对于此特定请求很重要。如何从请求中获取原始订单?我只需要一系列原始名称。
/* POST Put user items. */
router.post('/put', upload.array('useritem'), function (req, res, next) {
// req.files is always in a different order.
});
答案 0 :(得分:-3)
Node
不保证数组的索引顺序。有关详细信息,请参阅此问题:Nodejs Order of properties guarantee
正如强调指出的那样,我上面的陈述是不正确的。正确的说法是,如果您使用JSON.stringify()
将对象转换为JSON然后将其作为a的有效负载发送,则不应在对象中按属性的顺序进行中继请求。
虽然我的原始陈述显然是不正确的,但 是我遇到的一个问题 - 我的服务器上的数组值显示错误 - 我解决了它,如下图所示。阿米特在上述评论中的建议可能是问题的根源。特别是它是你的客户端javascript,它最初没有按照你期望的顺序输入文件。
无论原因是什么,你都必须在客户端做一些工作,为每个文件添加一个“人工”索引,然后将它们作为一个对象数组传递。
所以不要这样:
var files = ['file1.jpg','file2.jpg','file3.jpg'];
您需要将对象传递到后端,如下所示:
var files = [
{ index : 0, file : 'file1.jpg' },
{ index : 1, file : 'file2.jpg' },
{ index : 2, file : 'file3.jpg' },
];
然后,您需要在后端实例接收到对象数组后对其进行排序,如下所示:
files.sort(function(a, b) {
return a.index - b.index;
});
然后你可以遍历files
数组并按照你的意愿行事:
var justFiles = [];
async.each(files, function(file, iterate){
justFiles.push(file.file);
return iterate();
}, function(result){
console.log(justFiles);
});
输出结果为:
'file1.jpg','file2.jpg','file3.jpg'