2015-10-15 110 views
0

刮图像后,我可以使用请求下载到文件夹。我想将此图片的位置传递给我的Mongoose收藏。将刮图像的位置保存到数据库节点/ MEAN

在回调中,我认为应该有一种方法来保存位置,以便在保存模型对象时可以传递此信息。

exports.createLook = function(req, res) { 
    var url = req.body.image; 
    var randomizer = '123456'; 

    var download = function(url, filename, callback) { 

    request(url) 
     .pipe(fs.createWriteStream(filename)) 
     .on('close', callback); 
    }; 

    download(url, '../client/assets/images/' + randomizer + '.jpg', function() { 
    console.log('done'); 
    // do something? 
    }); 

    // now get model details to save 
    var newLook = new Look(); 
    newLook.title = req.body.title; 
    newLook.image =  // image location 

    newLook.save(function(err, look) { 
    if(err) return res.send(500); 
    } else { 
    res.send(item); 
    } 
} 
+0

不知道如果我理解你。看看你的代码,你可以设置'newLook.image =“../client/assets/images/'+ randomizer +'.jpg”' –

+0

我将改变randomizer到创建一个随机字符串的东西。因此,首先我下载并保存图像到我的文件夹,然后将其保存到我的模型,所以randomizer会改变。 – venturz909

回答

1

假设“随机”,会产生,我会做:

exports.createLook = function(req, res) { 
    var url = req.body.image; 
    var randomizer = getSomthingRandom(); 

    var download = function(url, filename, callback) { 

    request(url) 
     .pipe(fs.createWriteStream(filename)) 
     .on('close', callback(filename); 
    }; 

    download(url, '../client/assets/images/' + randomizer + '.jpg', function(filename) { 
    console.log('done'); 
    // now get model details to save 
    var newLook = new Look(); 
    newLook.title = req.body.title; 
    newLook.image = filename; 
    .... 
    }); 
+0

谢谢,这是很好的解决方案。我确实遇到了一个令人讨厌的问题:“发送后无法设置标题”消息,该消息将尝试修复。 – venturz909

+0

很高兴我能帮到你。如果这回答你的问题,那么请接受它作为正确的答案。 –