Meteor 简单模式和多种形式
我有一个用户配置文件模式,看起来有点像这样:Meteor 简单模式和多种形式,meteor,simple-schema,Meteor,Simple Schema,我有一个用户配置文件模式,看起来有点像这样: Schema.UserProfile = new SimpleSchema({ name: { type: String, optional: false }, gender: { type: String, optional: false, allowedValues: ['Male', 'Female'] }, location
Schema.UserProfile = new SimpleSchema({
name: {
type: String,
optional: false
},
gender: {
type: String,
optional: false,
allowedValues: ['Male', 'Female']
},
location: {
type: String,
optional: false
},
age: {
type: Number,
optional: false
}
}
我的注册表要求用户在上面选择他们的性别。注册后,用户将收到另一张表单,以填写其余数据:姓名、位置和年龄
问题是:当用户尝试注册时,我得到一个错误:名称是必需的
。在用户注册之前,他们不会输入自己的姓名
仅验证实际保存在特定表单上的数据的正确方法是什么
编辑
这是我的注册脚本:
var data = {};
var profile = {};
data.email = $('#email').val();
data.password = $('#password').val();
profile.gender = $('#gender').val();
data.profile = profile;
Accounts.createUser(data, function (error) {
// do
// ERROR: Name is required
});
当用户实际注册时,会向他们显示一个表单,用于填写其他数据。表单submit调用一个方法,尝试更新配置文件对象。通过使用选项
optional:false
在创建对象时将其设置为必填项
一种解决方案是使用myCollection.insert()使用标志validate:false
而不是createUser()
的code>
e、 g
这不会触发错误,因为正在跳过验证
我个人不会使用这种方式,但它可能是一种解决方案。通过使用选项optional:false
,无论何时创建对象,您都将其设置为必填项
一种解决方案是使用myCollection.insert()使用标志validate:false
而不是createUser()
的code>
e、 g
这不会触发错误,因为正在跳过验证
我个人不会使用这种方式,但它可能是一种解决方案。您可以使用SimpleSchema的pick
命令从模式中选择某些元素。这样,就可以从同一原始模式定义派生多个模式
Schemas.UserProfileRegistration1 = Schemas.UserProfile.pick(['gender']);
Schemas.UserProfileRegistration2 = Schemas.UserProfile.pick(['name', 'location', 'age']);
您可以使用SimpleSchema的pick
命令从架构中选择某些元素。这样,就可以从同一原始模式定义派生多个模式
Schemas.UserProfileRegistration1 = Schemas.UserProfile.pick(['gender']);
Schemas.UserProfileRegistration2 = Schemas.UserProfile.pick(['name', 'location', 'age']);
您能发布您的更新代码吗?您是否查看了我对其他问题的回答?“我想,如果这样做有效的话,同样的事情也适用于这里。”斯蒂芬伍兹我删除了这个问题,因为它似乎是这个问题的复制品。话虽如此,我读了你的答案,但它似乎对我解决这个具体问题没有帮助。你能发布你的更新代码吗?你有没有查看我对你其他问题的答案?“我想,如果这样做有效的话,同样的事情也适用于这里。”斯蒂芬伍兹我删除了这个问题,因为它似乎是这个问题的复制品。话虽如此,我读了你的答案,但它似乎没有帮助我解决这个具体问题。