Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 简单模式和多种形式_Meteor_Simple Schema - Fatal编程技术网

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']);

您能发布您的更新代码吗?您是否查看了我对其他问题的回答?“我想,如果这样做有效的话,同样的事情也适用于这里。”斯蒂芬伍兹我删除了这个问题,因为它似乎是这个问题的复制品。话虽如此,我读了你的答案,但它似乎对我解决这个具体问题没有帮助。你能发布你的更新代码吗?你有没有查看我对你其他问题的答案?“我想,如果这样做有效的话,同样的事情也适用于这里。”斯蒂芬伍兹我删除了这个问题,因为它似乎是这个问题的复制品。话虽如此,我读了你的答案,但它似乎没有帮助我解决这个具体问题。