Meteor插入带有数组元素的集合模式

时间:2018-01-30 23:49:46

标签: arrays mongodb meteor simple-schema

您好我为Mongo集合创建了一个SimpleSchema,它具有可变数量的子文档,称为 measurables 。不幸的是,我已经做了一段时间了,我不记得如何插入这种类型的架构!有人可以帮助我吗?

架构如下:

const ExerciseTemplates = new Mongo.Collection('ExerciseTemplates');

const ExerciseTemplateSchema = new SimpleSchema({
  name: {
    type: String,
    label: 'name',
  },
  description: {
    type: String,
    label: 'description',
  },
  createdAt: {
    type: Date,
    label: 'date',
  },
  measurables: {
    type: Array,
    minCount: 1,
  },
  'measurables.$': Object,
  'measurables.$.name': String,
  'measurables.$.unit': String,
});

ExerciseTemplates.attachSchema(ExerciseTemplateSchema);

方法是:

Meteor.methods({
  addNewExerciseTemplate(name, description, measurables) {
    ExerciseTemplates.insert({
      name,
      description,
      createdAt: new Date(),
      measurables,
    });
  },
});

我的表格发送的可衡量数据是一组对象。

SimpleSchema文档似乎已过时。如果我使用他们用measurables显示的例子:type:[Object]表示一个对象数组。我得到一个错误,该类型不能是一个数组,我应该将它设置为数组。

任何建议都很棒!!

非常感谢提前!

编辑:

可衡量变量包含以下数据:

[{name: weight, unit: kg}]

使用上面的模式我完全没有错误,它是静默的,好像它是成功的,但是当我通过CLI检查数据库时,我没有集合。我做的事真的很蠢吗?当我创建一个新的流星应用程序时,它会为我创建一个Mongo数据库,我假设 - 我不会忘记实际创建数据库或某些东西是愚蠢的吗?

1 个答案:

答案 0 :(得分:0)

原来我是傻瓜。我发布的架构是正确的,并且完全符合预期。问题是我在我的进口目录中的文件中定义了我的模式和方法,在客户端和服务器目录之外。此方法文件使用调用方法的表单导入到文件中,因此可在客户端上使用,但不会导入到服务器中。

我猜这个方法是作为存根在客户端上调用的,所以我看到了console.log触发,但是没有在服务器上调用该方法,因此没有访问db。

关于新建议的文件结构,对我来说是个好教训。始终导入server / main.js中的服务器端代码! :D

感谢您的帮助,我以为我会生气!