繁体   English   中英

流星-插入对象数组

[英]Meteor - insert array of objects

我有这个架构(使用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' }

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

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

接着:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM