在mongodb中保存对象

时间:2016-09-07 21:02:27

标签: meteor

我正在尝试将变体选项保存为对象,类似于: {' 1' :{optionTitle:' title',optionPrice:12},' 2':{....}} //模式

RestMenuVariants.attachSchema(new SimpleSchema({
    restRefId: {type: String},
    createdBy:{type: String},
    title: {type: String},
    options: {type: Object},
    sortId: {type: String, optional: true},
    createdAt: {type: Date}

}));

//方法addMenuVariantItem

的一部分
return RestMenuVariants.insert({
            restRefId: restId,
            createdBy: Meteor.userId(),
            createdAt: new Date(),
            title: title,
            options: options,
            sort_id: sortId
        });

//创建对象的循环事件的一部分

  variantOptions[i] = {optionTitle: $(element).val(), optionPrice: $(elementPrice).val()};
}

//并调用方法

Meteor.call('addMenuVariantItem', this._id, this.createdBy, variantTitle, variantOptions, function(error, result){.....})

我没有得到任何检查或其他错误,变量已保存,但当我在控制台查找该项目时,我看到这些选项是一个空对象: // var cursor = RestMenuVariants.findOne({_ id:id}); //console.log(cursor.options)

Object {}

我错过了什么? 感谢。

1 个答案:

答案 0 :(得分:1)

看起来main被创建为数组,但您的模式只需要一个对象。

变化:

variantOptions

options: {type: Object}

在架构定义中。

options: {type: [Object], blackbox: true }, 选项告诉simple-schema忽略放入options数组的对象的结构。

另请注意,数组是!=具有编号键的嵌套对象,如您在说明中所述。你不会得到:

blackbox: true

相反,您会看到:

{
  '1': {optionTitle: 'title', optionPrice: 12},
  '2': {....}
}