Guardando una matriz de campos múltiples en mongodb usando mongoose

// Aquí está el modelo

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); 

// ruta

 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 } 

Mientras todos los demás campos se guardan, pero el que tiene una matriz con varios campos siempre se vuelve en blanco como “taskinfo: []”

El método de publicación es REST API para publicar una tarea en la base de datos de mongoose, para una matriz con un solo campo, todo funciona bien, pero la matriz con múltiples campos no se guarda, alguien, por favor, ayúdeme aquí.

La ayuda básica estará bien, solo por favor, enséñame a guardar “matriz de campos múltiples”.

 Mongoose doesnot always require subdocument structure and this can be achieved by the above model, please dont advice to use subdocument structure, I want to learn this. 

Gracias.

Creo que si taskinfo tiene varios valores y desea guardarlo como documento incrustado dentro del documento de tarea. Usted debe tener diferente documento de información de la tarea. Entonces, puedes ahorrar así

 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); 

Y ahora tendrás diferentes documentos como información de tarea como

 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 

Cuando va a guardar documento de tarea,

  Var TaskInfo = new TaskInfo({ isactive:true, taskobject:"", taskdetails:"", iscompleted:true }) var task = {}; task.tasktype = req.body.tasktype; 

puedes empujarlo

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

A continuación, guardará documento de tarea

 var taskObj = new Task(task); taskObj.save(function (err) { if (err) { res.send(err); return; } res.json({ message: 'Task has been created' }) }); });