我正在构建一个带有用户配置文件更新的 Nodejs 应用程序。除图像外,所有用户信息均完美更新。我无法在本地或数据库中保存图像。有人可以帮我解决这个问题吗? 这是我的代码 对于控制器
const {createUser, getUserPerUsername, searchUsersPerUsername, addUserIdToCurrentUserFollowing,
removeUserIdToCurrentUserFollowing, findUserPerId, updateUser, deleteUser} = require('../queries/users.queries')
const request = require('request')
const directoryUploads = require('../path').directoryUploads
const path = require('path')
const fs = require('fs')
const upload = require('../Middleware/upload')
exports.userUpdate = async (req, res, next ) => {
const userId = req.params.userId
const user = await findUserPerId(userId)
const body = req.body
try {
if(user) {
let picture = req.files['picture'] ? req.files['picture'][0].filename : null
console.log("Picture : " +picture)
const user = await findUserPerId(userId)
console.log("User Old : " + user)
if (userOld.picture) {
if (picture) {
const pathImagePreview = path.join(directoryUploads, 'uploads/') + user.picture
fs.exists(pathImagePreview, exists => {
if (exists)
fs.unlinkSync(pathImagePreview)
})
} else {
picture = user.picture
}
}
const userUptd = await updateUser(userId, {
firstname: body.firstname,
lastname: body.lastname,
"local.email": body.email,
phones: body.phones,
picture: body.picture
})
console.log("Image uploaded successfully !!")
req.flash('success', [`User ${userUptd.username} updated!`])
res.redirect('/users/profile')
} else {
throw new Error('Please make sure to fill in the fields correctly!')
}
} catch (error) {
console.log(error)
req.flash('errors', [error.message])
req.flash('body', body)
}
}
这里的图片指的是输入类型=“文件”的名称。 返回的错误是“无法读取未定义的属性‘图片’”。我认为它可能与文件检索有关
答案 0 :(得分:0)
我认为您有一个未声明的变量:
userOld 未定义对吗?
还有这条线从未使用过,所以我不确定你是否真的处理了上传:
const upload = require('../Middleware/upload')
你使用multer吗?