mongodb,nodejs上的猫鼬,保存在db中的照片



我有一个问题在我的mongodb中保存默认照片。用户可以上传照片,并且可以保存在DB中,没有任何问题。但是,当用户没有上传他的照片时,我想添加默认照片。这是我添加的代码的一部分:

busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {
  console.log("file");
    defaultPhoto = false;
    file.pipe(fs.createWriteStream(saveTo));
    newProfile.photo.contentType = mimetype;
});
busboy.on('field', (fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) => {
  if(fieldname == "voice") {
    newProfile.voice.data = val;
    newProfile.voice.contentType = 'audio/webm';
  } else {
    newProfile[fieldname] = val;
  }
});
busboy.on('finish', () => {
  if(defaultPhoto) {
    newProfile.photo.contentType = 'image/png';
    newProfile.photo.data = fs.readFileSync(path.join(__dirname + '/../images/', "profile-default.png"));
  } else {
    newProfile.photo.data = fs.readFileSync(saveTo);
    fs.unlink(saveTo);
  }
  newProfile.alias = newProfile.firstName + "" + newProfile.surname;
  newProfile.alias = newProfile.alias.toLowerCase();
  Profile.addProfile(newProfile, (err) => {
    if(err) console.log(err);
  })

使用此代码,上传工作正常,但是当用户没有上传他的照片时,我有错误:验证eRROR:配置文件验证失败:照片:铸造对象失败的值" null"路径" photo"

感谢您的帮助。

首先,出于性能原因,将图像存储在数据库中通常不是一个好主意。最好将图像存储在服务器上,然后将其引用到数据库中。

其次,我猜这条线正在引起问题:

newProfile.photo.data = fs.readFileSync(path.join(__dirname + '/../images/', "profile-default.png"));

newProfile.photo.data已设置为null,因为对readFileSync的调用返回null。检查您是否实际上存储了传递给它的目录中的默认配置文件照片。

最新更新