带上传文件的Javascript范围

时间:2018-09-29 05:56:21

标签: node.js scoping

我正在上传文件,它们可以上传,现在,我试图保存从云中获取的ID并将其放入db中。我遇到了我认为是范围界定问题的问题,我正在使用的模块使用了Promise,所以我认为这应该解决问题,但不会太多。

这可以接受许多文件,我想进行一个数据库调用,所以我试图将文件追加到单个数组中,以在时间到了时推送到数据库,而我不确定将代码放在哪里。 / p>

我添加了一些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,我将它弄混了,我不确定我错过了什么。

0 个答案:

没有答案
相关问题