res.set('Content-Type','image/jpg') не работает при обслуживании изображения в узле js

res.set('Content-Type', 'image/jpg') не работает при обслуживании файлов в узле js. Пожалуйста, взгляните на код, что не так с этим кодом. Я получаю значение пользователя и двоичное значение аватара из базы данных, но не вижу его в браузере.

http://localhost:3000/users/5f8930bba34fd3166c1b3f72/avatar, и я нажимаю этот URL на локальном сервере

router.get('/users/:id/avatar', async (req,res)=>{
        try {
            const user= await User.findById(req.params.id)
            if (!user || user.avatar){
                throw new Error('Avatar not found !!')
            } 
            res.set('Content-Type','image/jpg')
            res.send(user.avatar)
        } catch (error) {
            res.status(404).send()
        }
    })

Ниже приведены мои зависимости:

"dependencies": {
    "bcryptjs": "^2.4.3",
    "express": "^4.17.1",
    "jsonwebtoken": "^8.5.1",
    "mongodb": "^3.6.2",
    "mongoose": "^5.10.8",
    "mongoose-unique-validator": "^2.0.3",
    "multer": "^1.4.2",
    "validator": "^13.1.17"
  }

Это моя пользовательская модель

const userSchema=new mongoose.Schema({
    name:{
        type:String,
        required:true,
        trim:true,
        //unique:true,
    },
    age:{
        type:Number,
        default:0,
        validate(value){
            if(value<0){
                throw new Error('Age must be positive number')
            }
        }
    },
    email:{
        type:String,
        required:true,
        trim:true,
        unique:true,
        lowercase:true,
        validate(value){
            if(!validator.isEmail(value)){
                throw new Error('Email is invalid')
            }
        }
    },
    password:{
        type:String,
        required:true,
        minlength:7,
        trim:true,
        validate(value){
            if(value.toLowerCase().includes('password')){
                throw new Error('Password can not contain "password"');
            }
        }
    },

    tokens:[{
        token:{
            type:String,
            required:true
        }
    }],

    avatar:{
        type:Buffer
    }
    
},{
    timestamps:true
})

person Atish kumar    schedule 21.10.2020    source источник


Ответы (1)


Используйте 1_

res.setHeader('content-type', 'image/jpg');
person wangdev87    schedule 21.10.2020
comment
я пробовал с res.setHeader('content-type', 'image/jpg'); Но это не сработает для меня. я отправляю свою пользовательскую модель, это было бы более полезно. - person Atish kumar; 21.10.2020
comment
попробуйте image/jpeg, а не image/jpg - person wangdev87; 21.10.2020
comment
res.set('Тип контента','изображение/jpg'). это работало. Уильям Ответ тоже работал. Что-то было не так с кодом, если условие было написано неправильно. - person Atish kumar; 21.10.2020
comment
Спасибо, Уильям!! - person Atish kumar; 21.10.2020
comment
лучше всего использовать setHeader все время. пожалуйста, примите, если вы согласны. - person wangdev87; 21.10.2020