Meteor - 插入对象数组

时间:2015-06-26 22:24:06

标签: javascript mongodb meteor

我有这个架构(使用meteor-collection2):

Settings = new Mongo.Collection("settings");

var Schema = {};

Schema.Settings = new SimpleSchema({

user_id: {
        type: String,
        optional: false
    },
    settings_firm_name: {
        type: String,
        optional: false
    },
    settings_firm_primary_branch: {
        type: String,
        optional: false
    },
    settings_firm_employees_num: {
        type: Number,
        optional: false,
        min:1
    },
    settings_firm_address: {
        type: String,
        optional: false,
    },
    settings_firm_email: {
        type: String,
        regEx: SimpleSchema.RegEx.Email,
        optional: false,
    },
    settings_firm_web_page: {
        type: String,
        optional: false,
    },
    settings_firm_contact_phone: {
        type: String,
        optional: false,
    },
    settings_firm_fax: {
        type: String,
        optional: false,
    },
    settings_firm_social: {
        type: [Object],
        optional: false,
    },

    "firm_social.$.name": {
        type: String
    },
    "firm_social.$.link": {
        type: String,
        regEx:SimpleSchema.RegEx.Url
    }
});

我想添加由此架构验证的数据库数据。 settings_firm_social是对象数组。这些对象是从三个不同的输入字段创建的,其中每个对象都有名称和链接字段。如何在我的数据库中插入该文档?我只想尝试:

Settings.insert(settings, function(error,result){
 if(error){console.log(error)}

});

但是我的数组会填充三个空对象({})。

修改

当我记录我传递给Meteor方法的设置对象时,请插入:

I20150627-00:29:36.523(2)? Server log
I20150627-00:29:36.543(2)? { settings_firm_name: 'Test',
I20150627-00:29:36.543(2)?   settings_firm_primary_branch: 'test',
I20150627-00:29:36.543(2)?   settings_firm_employees_num: '200',
I20150627-00:29:36.543(2)?   settings_firm_address: 'Test',
I20150627-00:29:36.544(2)?   settings_firm_contact_phone: '12345',
I20150627-00:29:36.544(2)?   settings_firm_fax: '123445',
I20150627-00:29:36.544(2)?   settings_firm_web_page: 'http://localhost:3000/settings/ZQwjxYzBuSfodxHvF',
I20150627-00:29:36.544(2)?   settings_firm_email: 'test@hotmail.com',
I20150627-00:29:36.544(2)?   settings_firm_social:
I20150627-00:29:36.545(2)?    [ { name: 'Facebook',
I20150627-00:29:36.545(2)?        link: 'http://localhost:3000/settings/ZQwjxYzBuSfodxHvF' },
I20150627-00:29:36.545(2)?      { name: 'Twitter',
I20150627-00:29:36.546(2)?        link: 'http://localhost:3000/settings/ZQwjxYzBuSfodxHvF' },
I20150627-00:29:36.546(2)?      { name: 'LinkedIn',
I20150627-00:29:36.546(2)?        link: 'http://localhost:3000/settings/ZQwjxYzBuSfodxHvF' } ],
I20150627-00:29:36.546(2)?   user_id: 'ZQwjxYzBuSfodxHvF' }

插入后:

I20150627-00:31:23.185(2)? { settings_firm_name: 'Test',
I20150627-00:31:23.185(2)?   settings_firm_primary_branch: 'test',
I20150627-00:31:23.185(2)?   settings_firm_employees_num: 200,
I20150627-00:31:23.185(2)?   settings_firm_address: 'Test',
I20150627-00:31:23.185(2)?   settings_firm_contact_phone: '12345',
I20150627-00:31:23.186(2)?   settings_firm_fax: '123445',
I20150627-00:31:23.186(2)?   settings_firm_web_page: 'http://localhost:3000/settings/ZQwjxYzBuSfodxHvF',
I20150627-00:31:23.187(2)?   settings_firm_email: 'test@hotmail.com',
I20150627-00:31:23.187(2)?   settings_firm_social: [ {}, {}, {} ],
I20150627-00:31:23.187(2)?   user_id: 'ZQwjxYzBuSfodxHvF' }

1 个答案:

答案 0 :(得分:0)

您可以添加新架构对象以验证settings_firm_social。

Schema.settings = new SimpleSchema({
  settings_firm_social: {
    type: [settingsFirmSocialSchema]
  }
});

然后:

var settingsFirmSocialSchema = new SimpleSchema({
  name: {
    type: String
  },
  link: {
    type: String
  }
});