2015-03-25 26 views
0

我想有些事情推到猫鼬模型,该模型是这样的。哈希被推到猫鼬模型“的翻译:”

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

我的猜测是,你最近添加的type场到嵌入式对象items这是使猫鼬现在认为,items包含字符串数组,而不是对象的数组像你有。

要修复它,使用对象定义type类型架构中的像这样:

var ScheduleSchema = new mongoose.Schema({ 
    hours: Number, 
    items: [{ 
     number: Number, 
     minutes: Number, 
     details: {description: String}, 
     type: {type: String} 
    }], 
    userId: Number 
}); 
+0

感谢响应。今天我从办公室回到家时,我会试一试。 – Zack 2015-03-25 22:36:36

+0

@Zack这是否适合你? – JohnnyHK 2015-03-31 03:17:12