如何在流星Collection2中存储键值对字段

问题描述:

我想存储一组键值对对象。我正在使用流星和collection2。我声明了下面给出的字段数据类型。我想存储像如何在流星Collection2中存储键值对字段

[{key:value,key:value},{key:value,key:value},{key:value,key:value}] 

对象在我的数据库架构我定义的架构类似这样的

Meteor.mytable = new Meteor.Collection2('mytable', { 
    schema: { 
     name: { 
      type: String, 
      label: "name", 
      optional:true 
     },    
     the_object:{ 
      type: [Object], 
      label:" Storing the list objects ", 
      optional:false 
     }, 
    } 
}); 

,并同时存储在服务器端的数据我在做什么

Meteor.mytable.insert({name:"name",the_object:[{key:value,key:value},{key:value,key:value}]); 

但这里它创建一个只包含名称字段的实例,但不包含the_object提交的

谢谢

+0

阅读 http:// doc s.mongodb.org/manual/reference/bson-types/ http://docs.mongodb.org/meta-driver/latest/legacy/bson/ –

+0

Thanx Denis Nikanorow,我使用Object数据类型来存储对象字段但它不存储给定的对象。可能是我做错了。我按照要求编辑了问题 –

在模式中,您应该声明密钥名称。您可以将关键值对对象存储在collection2模式中。

Meteor.mytable = new Meteor.Collection2('mytable', { 
schema: { 
    name: { 
     type: String, 
     label: "name", 
     optional:true 
    },    
    the_object:{ 
     type: [Object], 
     label:" Storing the list objects ", 
     optional:false 
    }, 
    "the_object.$.label": { 
     type: String, 
     optional: true 
    }, 
    "the_object.$.title": { 
     type: String, 
     optional: true 
    },  
} 
}); 

现在你可以使用插入查询,如下

Meteor.mytable.insert({name:"name",the_object:[{label:value,title:value},{label:value,title:value}]); 
Meteor.mytable.insert({name:"name",the_object:[{label:"testLable1",title:"testTitle1"},{label:"testLable2",title:"testTitle2"}]); 

我声明如下矿山代码collection2,见示例代码

Actions = new Meteor.Collection("actions"); 

var Schemas = {}; 
Schemas.Action = new SimpleSchema({ 
    serviceId: { 
    type: String 
    }, 
    actionName: { 
    type: String 
    }, 
    actionDescription: { 
    type: String 
    }, 
    actionUrl: { 
    type: String, 
    optional: true 
    }, 
    actionData: { 
     type: [Object], 
     optional: true 
    }, 
    "actionData.$.label": { 
     type: String, 
     optional: true 
    }, 
    "actionData.$.require": { 
     type: String, 
     optional: true 
    }, 
    "actionData.$.name": { 
     type: String, 
     optional: true 
    }, 
    "actionData.$.placeHolder": { 
     type: String, 
     optional: true 
    }, 
    "actionData.$.actionType": { 
     type: String, 
     optional: true 
    }, 
    headers: { 
     type: Object, 
     optional: true 
    } 
}); 

Actions.attachSchema(Schemas.Action); 

矿山查询如下

Actions.insert({ 
     serviceId:"123456", 
     actionName: "Post", 
     actionDescription: "Create a new post on your page.", 
     actionUrl: "https://graph.test.com/v2.1/me/feed", 
     actionData: 
       [ 
        {label: "Message", require: "required", name: "message", placeHolder: "Message text"}, 
        {label: "Link you want to share", require: "optional", name: "link", placeHolder: "Publicly accessible URL"}, 
        {label: "Link name", require: "optional", name: "name", placeHolder: "Title of the link preview"}, 
        {label: "Link preview picture", require: "optional", name: "picture", placeHolder: "Preview image associated with the link"}, 
        {label: "Link caption", require: "optional", name: "caption", placeHolder: "Caption under the title in the link preview"}, 
        {label: "Link description", require: "optional", name: "description", placeHolder: "Description in the link preview"}, 
        {label: "Link description", require: "optional", name: "description", placeHolder: "Description in the link preview"} 
       ] 
    }) 

Actions.insert({ 
     serviceId:"123456", 
     actionName: "Post", 
     actionDescription: "Create a new photo", 
     actionUrl: "https://graph.test.com/v2.1/me/photos", 
     actionData: 
       [ 
        {label: "Message", require: "required", name: "message", placeHolder: "Message text"}, 
        {label: "Image URL(Publicly accessible URL we can pull the image from.)", require: "required", name: "url", placeHolder: "Publicly accessbile URL of image", actionType: "createfile"} 
       ] 
    })