哈希被推到猫鼬模型上作为'[object Object]“

时间:2015-03-25 02:31:50

标签: javascript mongoose

我正在尝试将一些东西推到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?我相信我之前甚至可以做到,但我对我的日程安排代码进行了一些更改,现在我做不到。

这会让我相信错误出现在我的日程安排代码中,但正如您所看到的,它正在根据控制台输出创建项目列表。任何人都可以看到一个非常明显的,可能是猫鼬相关的错误,我作为一个新手可能会错过吗?

1 个答案:

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