我目前有一个array
,其中包含多个objects
嵌套在其中。
以下是格式......
[ { id: 1, title: 'Squats', video: 'https://www.youtube.com/watch?v=aPYCiuiB4PA' }, { id: 2, title: 'Push-Ups',video: 'https://www.youtube.com/watch?v=aPYCiuiB4PA' }]
我正在.save()
模型中尝试Schedule
它看起来像这样......
var ScheduleSchema = new mongoose.Schema({
schedule: [Object]
})
当我在服务器端的Schedule
控制器中运行以下代码时,.save()
功能使我获得了成功'消息(我将其编程为给出),但当我查看我的MongoDB
数据库时,它会在schedule
数组中没有任何内容的情况下保存错误。
这是保存的信息在数据库中的样子....
{ "_id" : ObjectId("56c28a0d4c92bec03408c077"), "schedule" : [ ], "__v" : 0 }
我感觉我的模型设置错了。
我尝试过的模型架构......
1)schedule: []
2)schedule: [Schema.Types.Mixed]
以防这是有用的,当我尝试从计划控制器保存所述数据时,这是我的.save()
函数...
var new_schedule = new Schedule(req.body.info);
new_schedule.save(function(err){
if(err){
console.log('err');
}else{
console.log('worked');
}
})
答案 0 :(得分:3)
我建议您设置这样的架构:
var ScheduleSchema = new mongoose.Schema({
schedule: [mongoose.Schema.Types.Mixed]
});
这将是设置它的正确方法。另一种方法是在线定义对象,如下所示:
var ScheduleSchema = new mongoose.Schema({
schedule: [{
id: { type: Number, default: 1 },
title: { type: String, default: '', trim: true },
video: { type: String, default: '', trim: true }
}]
});
此外,它可能不是服务器端代码的问题。在使用req.body.info创建新计划之前,您可能希望放入如下所示的行:
console.log(JSON.stringify(req.body, null, 2));
这将以可读格式打印出req.body对象,以便您可以确保客户端应用程序正在发送您认为您正在获取的信息。
答案 1 :(得分:0)
使用此:
var model = mongoose.model("CollectionName",SchemaName);
model.insertMany(arrayOfSchedules , function(err,docs){});