全局声明
let veh = {
data: []
}
基于下面的异步系列。首先是我从vehicle.model获取数据,然后分配veh.data = vehicle(这是结果),然后使用车辆ID查询集合。现在我从集合中得到的结果是我想要将这些数据追加或添加到veh.data的,这就是为什么在第二个查询中可以看到一行
if (finalFile) {
veh.data[i].FileData = finalFile
}
但是当我检查finalresult时,没有添加FileData。异步查询有任何问题吗?
async.series([
function (next) {
Vehicle.model.count({}, function (err, totalCount) {
if (err) {
response = { "error": true, "message": "Error fetching data" }
}
Vehicle.model.find(query, {}, pagination).sort(sortOrd + sortType).exec(function (err, vehicle) {
if (err || !vehicle) {
res.json({
message: err
})
}
var totalPages = Math.ceil(totalCount / size)
if (vehicle) {
veh.data = vehicle
}
return next();
})
})
},
}, 函数(下一个){
MongoClient.connect(url, function (err, client) {
if (err) {
return res.render('index',
{
title: 'Uploaded Error',
message: 'MongoClient Connection error', error: err.errMsg
});
}
const db = client.db(dbName);
const collection = db.collection('fs.files');
const collectionChunks = db.collection('fs.chunks');
for (let i = 0; i < veh.data.length; i++) {
let ImageList = veh.data[i].ImageList.split(',')
let profile_name = ImageList[0].split('/').pop();
collection.find({
$and: [
{ $or: [{ metadata: veh.data[i].VIN }] },
{ $or: [{ filename: profile_name }] }
]
}).toArray(function (err, docs) {
if (err) {
return res.render('index', {
title: 'File error',
message: 'Error finding file',
error: err.errMsg
});
}
if (!docs || docs.length === 0) {
return res.render('index', {
title: 'Download Error',
message: 'No file found'
});
} else {
for (let i = 0; i < docs.length; i++) {
collectionChunks.find({ files_id: docs[i]._id })
.toArray(function (err, chunks) {
if (err) {
return res.render('index', {
title: 'Download Error',
message: 'Error retrieving chunks',
error: err.errmsg
});
}
if (!chunks || chunks.length === 0) {
return res.render('index', {
title: 'Download Error',
message: 'No data found'
});
}
let fileData = []
for (let i = 0; i < chunks.length; i++) {
fileData.push(chunks[i].data.toString('base64'));
}
let finalFile = 'data:' + docs[0].contentType + ';base64,'
+ fileData.join('');
if (finalFile) {
veh.data[i].FileData = finalFile
}
});
}
console.log("Resulta1 :" , veh.data)
}
})
}
return next();
})
当我在系列的第二个查询中分配了FileData时,它存在,但是当我检查第三个FileData中的veh.data时,就没有了。
},函数(下一个){
return res.status(200).send({
message: "success",
pageNo: pageNo,
totalRecords: veh.data.length,
data: veh.data,
// totalPages: totalPages
})
}
为什么没有将FileData添加到veh.data对象数组中每个对象的最终结果中?哪个在第三个功能上?