我有一个允许文件上传的nodejs网络服务器,我想添加上传到用户的文件,但是每次我尝试添加到用户db数组时,都会说它添加了它,但是当我读取用户文件时,它返回一个空数组。我使用以下代码尝试将其添加到数组中:
for (var x in files){
User.findByIdAndUpdate(req.user._id,
{$push: {"files":{name:files[x].filename}}},
function (err, doc) {
if (err) throw err;
console.log(doc);
});
}
使用的架构是这样:
var schema = new mongoose.Schema({
name: {type:String, required: true, trim: true, lowercase:true, unique: true},
hash: {type:String, required: true },
files: [],
premium: {type:Boolean, default: false}
});
答案 0 :(得分:0)
删除for循环,并使用 $each
和 $push
运算符将多个值附加到数组,如下所示:
User.findByIdAndUpdate(req.user._id,
{ '$push': {
'files': {
'$each': files.map(f => ({ name: f.filename }))
}
} },
(err, doc) => {
if (err) throw err;
console.log(doc);
}
);
您可能需要更新架构以显式定义文件数组字段:
var schema = new mongoose.Schema({
name: {type: String, required: true, trim: true, lowercase:true, unique: true},
hash: {type: String, required: true },
files: [{ name: String }],
premium: {type: Boolean, default: false}
});