[英]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.