我很少向别人求助,但是在这种情况下,我不知道该怎么办。
我想处理对我的API的PUT请求,以更新MongoDB数据库中的“名称”或“ dllFile”或两个值,但是无论我做什么,它都会为未指定的值返回“ null”。
对我来说,最好在示例中显示问题,请看代码:
b
所以,我的问题是我想更新一个DLL文件,该文件位于我的服务器及其JSON属性(“ dllFile”)中,并且文件路径位于数据库中。如果需要,我也想更新“名称”属性。
我以multer作为中间件以多部分形式发送文件-它可以工作,但是我也将其路径存储在“ dllFile”属性中,上传文件时需要更改该属性。我在findOneAndUpdate()中有要设置的名称和dllFile属性。
问题是,当我设置两个值-可以正常工作时,属性会正确更改,但是例如当我仅发送文件时,其路径在dllFile中会更改,但名称会设置为“ null”。我知道为什么将它设置为null,但是如果我只想设置一个值,我不知道该怎么办。
我想出了一个for循环,该循环遍历数据库中的属性,但它仅适用于JSON中的名称,但不适用于多部分形式。
我从更新文件中得到的示例响应:
exports.dlls_update_one = (req, res, next) => {
const id = req.params.dllId
const name = req.body.name
const dllFile = req.file.path
DLL
.findOneAndUpdate(id, { $set: { name, dllFile }})
.exec()
.then(result => {
res.status(200).json({
message: 'File successfully updated!',
get_info: {
type: 'GET',
description: 'Get information about this DLL',
url: `https://xxx.xxxx.xx/api/dlls/${result._id}`
}
});
})
.catch(err => {
res.status(500).json({
error: err
});
});
}
我感谢任何人的帮助。我希望你明白我的意思。如有任何疑问,请询问。我会尽一切努力来完成这项工作。