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

//这是模型

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方法是REST API将任务发布到mongoose数据库中,对于单个字段的数组,一切工作正常,但多个字段的数组没有得到保存,有人请帮助我在这里。

基本的帮助会很好,请教我如何保存“多场arrays”。

 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. 

谢谢。

我认为,如果taskinfo有多个值,并且你想把它作为embedded文档保存在任务文档中。 你应该有不同的任务信息文件。 所以,你可以像这样保存

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

然后你将保存任务文件

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