您好我为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数据库,我假设 - 我不会忘记实际创建数据库或某些东西是愚蠢的吗?
答案 0 :(得分:0)
原来我是傻瓜。我发布的架构是正确的,并且完全符合预期。问题是我在我的进口目录中的文件中定义了我的模式和方法,在客户端和服务器目录之外。此方法文件使用调用方法的表单导入到文件中,因此可在客户端上使用,但不会导入到服务器中。
我猜这个方法是作为存根在客户端上调用的,所以我看到了console.log触发,但是没有在服务器上调用该方法,因此没有访问db。
关于新建议的文件结构,对我来说是个好教训。始终导入server / main.js中的服务器端代码! :D
感谢您的帮助,我以为我会生气!