2014-07-25 57 views
0

难住这一个:猫鼬 - 发布对象数组混合

我有一个预建的对象集称为“步”,包含一堆子对象。它已经过消毒和正确设置,所以我只想将它推入Mongo整体。

我有一个猫鼬的模式是这样的:

var SummarySchema = new Schema ({ 
    title : {type: String, trim: true}, 
    steps : {}, 
    created : Date, 
    updated : Date, 
    testKey : Number 
}) 

绝对没有将其保存 - 我已经试过这一点,这让我“未定义”

var summary = new Summary(); 


summary._id = ''; 
summary.user = req.body.user; 
summary.testKey = req.params.testId; 
summary.steps = req.body.steps; 

summary.save(function(err, data, number) { 
      if (err) 
       res.send(err); 
      console.log('I have added and saved a summary', data); 
    }); 

console.log (summary);得到我

summary { steps: 
    [ { tags_single: [Object], 
     pass_fail: false, 
     session_by_user: [Object], 
     name: 'Apollonius of Perga' }, 
    { tags_single: [Object], 
     pass_fail: false, 
     session_by_user: [Object], 
     name: 'Orion\'s sword' } ], 
    testKey: 184702356266, 
    _id: 53d2ca9e61b11bab40000004 } 

和各种for循环将步骤推入数据库。 在任何情况下,它都不会保存。我不知道为什么它至少不能保存一个空的结构,但它完全失败了。

你不能把东西推入混合对象吗?这样做的正确方法是什么?即使循环以“更整洁”的方式返回数据也会失败。

+0

尝试在模式中使用以下步骤定义步骤:'steps:Object' – scarlz

+0

没有骰子,仍然在保存时返回undefined。 – pretentiousgit

+0

你将在你的中间代码块中得到'undefined',因为你试图将'_id'设置为一个空字符串,这不是一个有效的'ObjectId'类型。如果你删除手动'_id'赋值,它应该可以工作。 – scarlz

回答

1

问题是您试图为您的文档分配空字符串作为_id,这不是有效的ObjectId类型。

省略此作业,并且文档将使用已由Summary构造函数创建的_id正确保存。