【发布时间】:2021-08-28 00:55:03
【问题描述】:
我正在使用 MongoDB 版本 4.4.8 和 mongoose 版本 5.13.5 处理要下载的文件包,但遇到了问题。每当从包中删除文件时,它都不会更新。这是我正在尝试运行的代码:
app.post('/remove-package-file', (req, res, next) => {
let { package, file } = req.body
if (!package || !file) return res.status(500).json({ error: true, message: 'Please specify file and package to remove' })
Package.findOne({ _id: package }).then(pack => {
if (!pack) return res.status(500).json({ error: true, message: 'Unable to locate package' })
if (!pack.files.includes(file)) return res.status(500).json({ error: true, message: 'File is not in package' })
File.findOne({ _id: file }).then(file => {
if (!file) return res.status(500).json({ error: true, message: 'Unable to locate file' })
pack.files.pull(file._id)
pack.size = pack.size-file.stats.size
pack.markModified('size')
pack.markModified('files')
pack.save().then(result => {
console.log(result)
Package.findOne({_id: result._id}).then(result2 => {
console.log(result2)
res.status(200).json({ error: false, package: result2 })
}).catch(e => {
saveError(e)
return res.status(500).json({ error: true, message: 'DB error' })
})
}).catch(e => {
saveError(e)
return res.status(500).json({ error: true, message: 'DB error' })
})
}).catch(e => {
saveError(e)
return res.status(500).json({ error: true, message: 'DB error' })
})
}).catch(e => {
saveError(e)
return res.status(500).json({ error: true, message: 'DB error' })
})
})
输出:
{
titles: [ '6127d98a5b5df7462cb166d5' ],
files: [ '6127da305b5df7462cb166db' ],
accessLog: [],
successfulDownloads: [],
timesDownloaded: 0,
recipients: [ '6126da9ac081145ab46039e6' ],
_id: 6128363fc03f9d23f86258ac,
size: -281171,
expires: 2021-08-28T00:47:59.654Z,
name: 't2',
createdBy: '6126da9ac081145ab46039e6',
link: 'http://localhost:4232/download-package?_id=6128363fc03f9d23f86258ac',
date: 2021-08-27T00:47:59.658Z,
__v: 7
}
{
titles: [ '6127d98a5b5df7462cb166d5' ],
files: [ '6127da9c5b5df7462cb166f9', '6127da305b5df7462cb166db' ],
accessLog: [],
successfulDownloads: [],
timesDownloaded: 0,
recipients: [ '6126da9ac081145ab46039e6' ],
_id: 6128363fc03f9d23f86258ac,
size: -281171,
expires: 2021-08-28T00:47:59.654Z,
name: 't2',
createdBy: '6126da9ac081145ab46039e6',
link: 'http://localhost:4232/download-package?_id=6128363fc03f9d23f86258ac',
date: 2021-08-27T00:47:59.658Z,
__v: 7
}
这表明文件已正确更新,但当随后查询时,文件数组中的值仍然相同,但大小已更改,并且具有新的版本号。如果您知道为什么会发生这种情况,请告诉我。
【问题讨论】:
-
您使用的是哪个 mongodb 版本?
-
我使用的是4.4.8版
标签: javascript node.js mongodb mongoose