Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用带有Mongoose的addToSet添加多个ObjectId?_Javascript_Arrays_Mongodb_Mongoose_Subdocument - Fatal编程技术网

Javascript 如何使用带有Mongoose的addToSet添加多个ObjectId?

Javascript 如何使用带有Mongoose的addToSet添加多个ObjectId?,javascript,arrays,mongodb,mongoose,subdocument,Javascript,Arrays,Mongodb,Mongoose,Subdocument,我试图使用mongoose将多个ObjectId添加到子文档数组中。我使用了一种类似的方法来添加一个子文档,但我正在尝试找出如何添加多个子文档 项目模型 import mongoose from 'mongoose'; var Schema = mongoose.Schema; const ProjectSchema = new Schema({ title: { type: String }, files: [{ type: Sche

我试图使用mongoose将多个ObjectId添加到子文档数组中。我使用了一种类似的方法来添加一个子文档,但我正在尝试找出如何添加多个子文档

项目模型

import mongoose from 'mongoose';

var Schema = mongoose.Schema;
const ProjectSchema = new Schema({
  title: {
           type: String
  },
  files: [{
            type: Schema.ObjectId,
            ref: 'File'
  }]
});

export default mongoose.model('Project', ProjectSchema);
import mongoose from 'mongoose';

var Schema = mongoose.Schema;
const FileSchema = new Schema({
  fileUrl: {
           type: String
  },
  date: {
          type: Date
  }

});

export default mongoose.model('File', FileSchema);
文件模型

import mongoose from 'mongoose';

var Schema = mongoose.Schema;
const ProjectSchema = new Schema({
  title: {
           type: String
  },
  files: [{
            type: Schema.ObjectId,
            ref: 'File'
  }]
});

export default mongoose.model('Project', ProjectSchema);
import mongoose from 'mongoose';

var Schema = mongoose.Schema;
const FileSchema = new Schema({
  fileUrl: {
           type: String
  },
  date: {
          type: Date
  }

});

export default mongoose.model('File', FileSchema);
控制器

    Project.create({fileUrl: req.fileUrl}, (err, proj) => {
      if (err) {
        console.log(err);
        return res.status(400).send(err);
      } else {
        File.distinct('_id', {date: {"$lt": req.date }}).exec((err, files) => {
          if (err)
            return (err)
        var added = new File([files]) <-----THE PROBLEM
        proj.files.addToSet(added)
        proj.save() 
        return res.status(200).send('OK');
    })
  }
}); 

你很接近!传递添加的变量时,不会通过发送值列表。基本上,您只发送一个数组对象

如果要执行addToSet函数,请尝试执行简单的迭代:

files.forEach(function(f) {
    var added = new File(f)
    proj.files.addToSet(added);
    proj.save(function(err, saved){
      if (err)
        throw (err)
      return;
    })
});

您可以在这里找到更多javascript迭代器的示例:这里有一个令人惊讶的全面选项列表。

您非常接近!传递添加的变量时,不会通过发送值列表。基本上,您只发送一个数组对象

如果要执行addToSet函数,请尝试执行简单的迭代:

files.forEach(function(f) {
    var added = new File(f)
    proj.files.addToSet(added);
    proj.save(function(err, saved){
      if (err)
        throw (err)
      return;
    })
});
您可以在这里找到更多javascript迭代器的示例:这里有一个令人惊讶的、全面的选项列表