【发布时间】:2018-07-09 23:32:28
【问题描述】:
您好,我为 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 文档似乎已过时。如果我使用它们显示的带有可测量值的示例:类型:[Object] 用于对象数组。我收到一个错误,类型不能是数组,我应该将其设置为 Array。
任何建议都会很棒!
非常感谢!
编辑:
可测量变量包含以下数据:
[{name: weight, unit: kg}]
使用上面的架构,我根本没有收到任何错误,它就像成功一样无声,但是当我通过 CLI 检查数据库时,我没有集合。我做的事情真的很愚蠢吗?当我创建一个新的流星应用程序时,它会为我创建一个 Mongo 数据库,我假设 - 我没有忘记实际创建一个数据库或一些愚蠢的东西?
【问题讨论】:
-
请添加
measurables的示例,其中不仅变量名可见,而且还有错误输出的摘录。到目前为止,架构看起来还不错。这似乎是输入数据的一个问题。 -
感谢您的回复 - 我编辑了原始帖子以显示变量 console.log
-
发生了什么,如果您将默认清理选项设置为
false,它会引发错误吗?见:github.com/aldeed/simple-schema-js#set-default-cleaning-options -
目前不在我的开发机器上,但稍后会尝试并告诉您进展如何。
标签: arrays mongodb meteor simple-schema