Я загружаю файлы, они загружаются нормально, теперь я пытаюсь сохранить идентификаторы, полученные из облака, и поместить их в базу данных.Я сталкиваюсь с тем, что мне кажется проблемой с областью видимости, модуль, который я использую, использует обещания, поэтому я думаю, что это должно решить проблему, но не так много.
Это может принять много файлов, и я хочучтобы сделать один вызов БД, поэтому я пытаюсь добавить файлы в один массив для отправки в БД, когда придет время, и я не уверен, куда поместить этот код.
Я добавил немного console.log
чтобы увидеть, что к чему.
const uploadFiles = (req,res,next)=> {
let b2fileIDs = [];
upload(req,res,function(err){
req.files.forEach(function(image){
var b2accountId;
var b2authToken;
var b2uploadURL;
//console.log(image);
b2.authorize()
.then(function(auth) {
//console.log("hit authorize");
b2accountId = auth.accountId;
b2authToken = auth.authorizationToken;
//console.log(b2authToken);
}).then(function(ret){
b2.getUploadUrl(process.env.B2BUCKET_ID)
.then(function(cb){
//console.log(cb);
//console.log("hit getUploadUrl")
//console.log(cb.uploadUrl)
b2uploadURL = cb.uploadUrl;
b2authToken = cb.authorizationToken;
})
.then(function(cb){
//console.log(b2authToken);
b2.uploadFile({
uploadUrl: b2uploadURL,
uploadAuthToken: b2authToken,
filename: 'test',
data: image.buffer
}).then(function(cb){
//console.log(cb.fileId);
//console.log(req.body);
b2fileIDs.push(cb.fileId);
console.log(b2fileIDs);
})
}).catch((error) => {
console.log("This is an ERROR " + error );
});
console.log("1");
})
console.log('2');
})
console.log('3');
})
console.log('4');
let savedPhotoLinks = {};
let links = {};
console.log(b2fileIDs + " This is the data");
b2fileIDs.forEach(function(link){
links.push('link: = ' + link);
});
console.log(links);
// Event.findByIdAndUpdate(req.body.mongo_event_id,{ $push: savedPhotoLinks}, (err, updatedEvent) => {
// if (err) {
// console.log(err);
// res.redirect("/event");
// } else {
// res.redirect("/event/" + req.params.id);
// }
// })
res.send("WooHoo, its in the cloud!");
};
Консоль показывает
2
2
2
3
1
1
1
[ '4_z32a825f2329e511a56990e16_f106d0a836e6d26b7_d20180929_m054906_c001_v0001097_t0026' ]
[ '4_z32a825f2329e511a56990e16_f106d0a836e6d26b7_d20180929_m054906_c001_v0001097_t0026',
Так что, как вы можете видеть, вместо того, чтобы получить 111 222,3, я получаю это смешанное, и я не уверен, что япропустил.