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

时间:2014-01-23 05:41:02

标签: collections meteor meteorite meteor-collection2

我想存储一组键值对象。我正在使用meteor和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字段

谢谢

1 个答案:

答案 0 :(得分:0)

在架构中,您必须声明密钥名称。您可以在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"}
                ]
    })