【发布时间】:2017-12-05 12:18:46
【问题描述】:
问题:
我想通过将每个上传文件的文件信息写入我的数据库中来跟踪我上传的文件。但是,当我上传 2 个文件时,它通常会在数据库中创建 3 个条目,而当我上传 6 个文件时,它会创建超过 6 个条目。
我的数据库功能:
function saveAssetInDatabase(project, fileInformation) {
return new Promise((reject, resolve) => {
let uploaded_file = {}
uploaded_file = fileInformation
uploaded_file.file_type = 'asset'
uploaded_file.display_name = fileInformation.originalname
project.uploaded_files.push(uploaded_file)
project.save()
})
}
调用函数的简化代码:
for(var i=0; i<req.files["sourceStrings"].length; i++) {
// Unknown file format, let's save it as asset
saveAssetInDatabase(project, fileInformation).then(result => {
return res.status(200).send()
}).catch(err => {
logger.error(err)
return res.status(500).send()
})
}
我猜我的 db 函数有问题,因为它会导致重复的文件条目。我在这里做错了什么?一个文件应该有一个条目。
【问题讨论】:
-
使用
req.files.sourceStrings作为循环条件但不在循环本身中使用它有什么意义?您现在总是保存相同的资产 -
确保您的 req.files['sourseStrings'] 没有重复项?
-
@nem035 它被使用,但这只是一个简化版本。我把它削减到相关部分。 req.files.sourceStrings 用于创建
fileInformation
标签: javascript node.js mongoose ecmascript-6