簡體   English   中英

用貓鼬將對象添加到數組

[英]Add an object to an array with mongoose

我有一個允許文件上傳的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}
});

刪除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}
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM