Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays 使用mongoose在mongodb中保存多字段数组_Arrays_Node.js_Mongodb_Mongoose - Fatal编程技术网

Arrays 使用mongoose在mongodb中保存多字段数组

Arrays 使用mongoose在mongodb中保存多字段数组,arrays,node.js,mongodb,mongoose,Arrays,Node.js,Mongodb,Mongoose,//这是模型 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ObjectId = Schema.ObjectId; // Task schema var taskSchema = mongoose.Schema({ tasktype : {type: String}, createdon : {type: Date, default: Date.now}, createdby : {type

//这是模型

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;

// Task schema
var taskSchema = mongoose.Schema({

 tasktype  : {type: String},
 createdon : {type: Date, default: Date.now},
 createdby : {type: Schema.Types.ObjectId,ref: 'User'},
 visitedby : [{type: Schema.Types.ObjectId,ref: 'User'}],
 taskinfo  : [{ isactive:Boolean, taskobject:String, taskdetails:String, iscompleted:Boolean}]  

});
module.exports = mongoose.model('Task', taskSchema);
//路线

var Task     = require ('../models/task');
var User       = require ('../models/user');
var config     = require ('../../config');
module.exports = function(app, express) {

    var api = express.Router();

  api.post('/tasks', function (req, res) {
    var task = new Task({
 // ...
 tasktype  : req.body.tasktype,
 taskinfo  : req.body.taskinfo,
      }); 

     task.save(function(err){
        if(err){
           res.send(err);
        return;
        }
       res.json({message:'Task has been created'})
      });
return api
}
保存所有其他字段时,除了包含多个字段的数组的字段外,始终返回空白,如“taskinfo:[]”

post方法是RESTAPI,用于将任务发布到mongoose数据库中,对于单字段数组,一切正常,但多字段数组无法保存,请有人在此帮助我

基本帮助可以,请教我如何保存“多字段数组”


谢谢。

我认为如果taskinfo有多个值,并且您希望将其保存为任务文档中的嵌入文档。您应该有不同的任务信息文档。所以,你可以这样存钱

var TaskInfoSchema = require("taskInfo.js").TaskInfoSchema

var taskSchema = mongoose.Schema({

 tasktype  : {type: String},
 createdon : {type: Date, default: Date.now},
 createdby : {type: Schema.Types.ObjectId,ref: 'User'},
 visitedby : [{type: Schema.Types.ObjectId,ref: 'User'}],
 taskinfo  : [TaskInfoSchema]  

});
module.exports = mongoose.model('Task', taskSchema);
现在,您将有不同的文档作为任务信息,如

var taskInfo = mongoose.Schema({

     isactive:{type:Boolean}, 
     taskobject:{type:String}, 
     taskdetails:{type:String}, 
     iscompleted:{type:Boolean}

    });
    var TaskInfo = mongoose.model('TaskInfo', taskSchema);
    module.exports.TaskInfo = TaskInfo
    module.exports.TaskInfoSchema = taskSchema
保存任务文档时

 Var TaskInfo = new TaskInfo({
          isactive:true, 
          taskobject:"", 
          taskdetails:"", 
          iscompleted:true
    })



var task = {};
task.tasktype = req.body.tasktype;
你可以推它

 task.taskinfo = [];
        for (var i = 0; i < req.body.taskInfo.length; i++) {
            var taskInfo = new TaskInfo(req.body.taskInfo[i]);
            task.taskinfo.push(taskInfo);
        }

我认为如果taskinfo有多个值,并且您希望将其保存为任务文档中的嵌入文档。您应该有不同的任务信息文档。所以,你可以这样存钱

var TaskInfoSchema = require("taskInfo.js").TaskInfoSchema

var taskSchema = mongoose.Schema({

 tasktype  : {type: String},
 createdon : {type: Date, default: Date.now},
 createdby : {type: Schema.Types.ObjectId,ref: 'User'},
 visitedby : [{type: Schema.Types.ObjectId,ref: 'User'}],
 taskinfo  : [TaskInfoSchema]  

});
module.exports = mongoose.model('Task', taskSchema);
现在,您将有不同的文档作为任务信息,如

var taskInfo = mongoose.Schema({

     isactive:{type:Boolean}, 
     taskobject:{type:String}, 
     taskdetails:{type:String}, 
     iscompleted:{type:Boolean}

    });
    var TaskInfo = mongoose.model('TaskInfo', taskSchema);
    module.exports.TaskInfo = TaskInfo
    module.exports.TaskInfoSchema = taskSchema
保存任务文档时

 Var TaskInfo = new TaskInfo({
          isactive:true, 
          taskobject:"", 
          taskdetails:"", 
          iscompleted:true
    })



var task = {};
task.tasktype = req.body.tasktype;
你可以推它

 task.taskinfo = [];
        for (var i = 0; i < req.body.taskInfo.length; i++) {
            var taskInfo = new TaskInfo(req.body.taskInfo[i]);
            task.taskinfo.push(taskInfo);
        }


看起来您在
路线的
第9行附近丢失了一些代码。请检查。我正在询问保存数组的逻辑,因为我不知道如何使用多个字段保存数组,createdon默认保存,我现在不关心其他字段。
markModified
有效吗?即
doc.markModified(“taskinfo”)
我对它非常陌生,我从udemy或pluralsight的所有网络讲座中学到的是每个字段类型fieldname:res.body.fieldname。。您能告诉我多字段数组的完整逻辑吗?看起来您在
路线
的第9行附近丢失了一些代码。请检查。我正在询问保存数组的逻辑,因为我不知道如何使用多个字段保存数组,createdon默认保存,我现在不关心其他字段。
markModified
有效吗?即
doc.markModified(“taskinfo”)
我对它非常陌生,我从udemy或pluralsight的所有网络讲座中学到的是每个字段类型fieldname:res.body.fieldname。。您能告诉我多字段数组的完整逻辑吗?谢谢您的详细描述,先生,但我在某个地方读到不需要嵌入文档,您能告诉我如何通过创建单个模式来实现这一点吗?您能给我推荐一些书或课程,从中我可以了解如何使用mongoose在mongodb中插入数组字段。下面是我想要json文档的方式:请在设计架构之前遵循此链接我尝试了ans,但出现错误popsup,有人说我必须使用push来输入和保存数组。还有Var TaskInfo=new TaskInfo({isactive:true,taskobject:,taskdetails:,iscompleted:true})这就是为什么我们不接受用户的输入?谢谢您的介绍,先生,但我在某个地方读到了不需要嵌入文档的内容,您能告诉我如何通过创建单个模式来实现这一点吗?您能给我推荐一些书或课程,从中我可以了解如何使用mongoose在mongodb中插入数组字段。下面是我想要json文档的方式:请在设计架构之前遵循此链接我尝试了ans,但出现错误popsup,有人说我必须使用push来输入和保存数组。还有Var TaskInfo=new TaskInfo({isactive:true,taskobject:,taskdetails:,iscompleted:true})这就是为什么我们不接受用户的输入?