Dem*_*nes 0 javascript arrays node.js
我有一个NodeJS应用程序,我在其中一个路由中使用ExcelJS(由Express提供支持).在下面的代码片段中,一个简单的循环应该从Excel文件中读取行,然后将它们插入到数组中.但是,它们似乎没有插入.
router.get('/work', function(req, res, next) {
var posts = [];
var workbook = new Excel.Workbook();
workbook.xlsx.readFile(file).then(function() {
var worksheet = workbook.getWorksheet(1);
worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {
console.log(JSON.stringify(row.values));
posts.push(JSON.stringify(row.values));
});
});
res.json(posts);
});
Run Code Online (Sandbox Code Playgroud)
该console.log行工作正常,因为我能够在记录时看到控制台中的值.但是,由于posts某种原因,这些值不会插入到数组中.谁知道为什么?
由于此操作是异步的,因此您需要在完成CSV读取后重新发送数组:
router.get('/work', function(req, res, next) {
var posts = [];
var workbook = new Excel.Workbook();
workbook.xlsx.readFile(file).then(function() {
var worksheet = workbook.getWorksheet(1);
worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {
console.log(JSON.stringify(row.values));
posts.push(JSON.stringify(row.values));
});
res.json(posts); // moved within the callback to `then`
});
});
Run Code Online (Sandbox Code Playgroud)
之前,您在使用空数组终止请求之前,在已readFile解决的promise返回之前,允许您使用CSV中的值填充它.
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |