我正在尝试将社交网络中的个人资料照片保存为我的“fs.files”和“fs.chunks”中的Facebook,我可以实现这一点,但我发现这样做的方式并不合适
我的步骤是:
问题发生在第2步和第3步之间,因为在这种情况下保存磁盘上的文件不是最好的主意,并且在尝试将其存储在数据库上时会发生同步问题和延迟。
我曾使用setTimeout
javascript函数来实现它。但我知道,这太糟糕了。我想知道某种方式获取某种文件流并将其直接存储在GridFS上或使实际过程更有效:
代码:
从网址获取图片并保存(磁盘步骤)
// processing image 'http://graph.facebook.com/' + user.uid + '/picture';
// facebook -> disk
var userProfilePhoto = user.provider + '_' + user.uid + '.png';
request(user.photoURL)
.pipe(fs.createWriteStream(configApp.temp_files + userProfilePhoto));
获取保存在磁盘上的图片并将其存储在GridFS上
setTimeout(function() {
mongoFile.saveFile(user, true, userProfilePhoto, mimeType.mime_png,
function(err) {
if (!err) {
user.save();
}
}
);
}, 5000);
不幸的是我不得不使用setTimeout
使它成为可能,没有它mongo只是插入“fs.files”并跳过“fs.chunks”因为文件尚未就绪 - 似乎没有保存爱好。