我想存储一组键值对象。我正在使用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
字段
谢谢
答案 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"}
]
})