我正在尝试将一些东西推到Mongoose模型上。模型看起来像这样。
var ScheduleSchema = new mongoose.Schema({
hours: Number,
items: [{number: Number, minutes: Number, details: {description: String}, type: String}],
userId: Number
});
//later
ScheduleSchema.methods.createNew = function(hours, tasks, breathers) {
var schedule = makeSchedule(hours, tasks, breathers);
console.log(schedule);
this.items = schedule;
console.log(this.items);
}
我认为这是我的问题的足够代码,但如果需要我可以提供更多代码。基本上,我有一个创建计划的方法,然后我想将计划分配给对象的项目'属性。我必须承认我还在学习猫鼬,所以这可能是一个问题。
无论如何,我知道我的makeSchedule函数正在运行,因为我将其视为第一个控制台消息的输出。
[{ number: 1,
minutes: 30,
details: {description: 'Task A'},
type: 'task'},
{ number: 2,
minutes: 45,
details: {description: 'Task B'},
type: 'task'},
etc...
]
但是,当我从第二个日志语句中打开控制台输出this.items时,我看不到相同的结构。相反,我看到了
["[object Object]", "[object Object]", "[object Object]", etc...]
为什么我无法将计划变量分配给this.items?我相信我之前甚至可以做到,但我对我的日程安排代码进行了一些更改,现在我做不到。
这会让我相信错误出现在我的日程安排代码中,但正如您所看到的,它正在根据控制台输出创建项目列表。任何人都可以看到一个非常明显的,可能是猫鼬相关的错误,我作为一个新手可能会错过吗?
答案 0 :(得分:0)
我的猜测是你最近将type
字段添加到items
中的嵌入对象中,这使得Mongoose现在认为items
包含一个字符串数组而不是一个对象数组就像你一样。
要修复它,请使用对象在架构中定义type
的类型,如下所示:
var ScheduleSchema = new mongoose.Schema({
hours: Number,
items: [{
number: Number,
minutes: Number,
details: {description: String},
type: {type: String}
}],
userId: Number
});