我正在尝试将变体选项保存为对象,类似于: {' 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 {}
我错过了什么? 感谢。
答案 0 :(得分:1)
看起来main
被创建为数组,但您的模式只需要一个对象。
变化:
variantOptions
到
options: {type: Object}
在架构定义中。
options: {type: [Object], blackbox: true },
选项告诉simple-schema忽略放入options数组的对象的结构。
另请注意,数组是!=具有编号键的嵌套对象,如您在说明中所述。你不会得到:
blackbox: true
相反,您会看到:
{
'1': {optionTitle: 'title', optionPrice: 12},
'2': {....}
}