直接在mongoose中修改数组不起作用

时间:2017-09-18 17:25:47

标签: node.js mongodb mongoose

我有一个带有字段数组的mongoose模式。

我需要直接设置数组字段而不必删除现有值。

我正在使用

item.files.concat(myfiles); 

在下一个代码中,但它不起作用。只保存数组中的最后一项

//代码

var files=['file1','file2','file3']
var myfiles=[]
files.forEach(function(file){                          
   myfiles.push({title:file});
  }
});

//路由器

 FileSchema.findById(id).exec( (err,item) => {
        //fill files -- error is here
       item.files.concat(myfiles);
        item.save(function (err, data) {
          if (err) {
                return res.status(500).send(err)
          }
          res.send(data); //send response    
       })
  })

//模式

const mongoose=require('mongoose');
const fileSchema = new mongoose.Schema({
  id: {type: Number, unique:true},
  ...
  ...  
  files:[{title:{type: String}}]
});

1 个答案:

答案 0 :(得分:0)

来自MDN网络文档:

  

concat()方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

item.files = item.files.concat(myfiles);