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
})