使用mongoose将对象添加到数组

问题描述 投票:1回答:1

我有一个允许文件上传的nodejs webserver,我想添加上传给用户的文件,但每次我尝试添加到用户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}
});
arrays node.js mongodb mongoose schema
1个回答
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);
    }
);

您可能希望更新架构以显式定义files数组字段:

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}
});
© www.soinside.com 2019 - 2024. All rights reserved.