如何使用流星帐户和自动生成添加/编辑用户

Posted

技术标签:

【中文标题】如何使用流星帐户和自动生成添加/编辑用户【英文标题】:How to add/edit users with meteor accounts and autoform 【发布时间】:2015-03-13 10:14:10 【问题描述】:

我正在 Meteor 中构建管理系统的一部分,让管理员可以添加/编辑其他管理员。我正在使用 Meteor Accounts 和 Autoform,但我不知道如何处理它,以便使用 Autoform 验证用户并正确保存。根据我的发现,我似乎需要使用Accounts.createUser 方法并将表单设置为type="method" 或其他东西,但我不确定如何处理它,或者这是否是正确的方法。

这是我现在的代码:

架构:

Schema = ;

Schema.UserProfile = new SimpleSchema(
    name: 
        type: String,
        label: "Name"
    
);

Schema.User = new SimpleSchema(
    email: 
        type: String,
        regEx: SimpleSchema.RegEx.Email
    ,
    password: 
      type: String,
      label: "Password",
      min: 6
    ,
    passwordConfirmation: 
      type: String,
      min: 6,
      label: "Password Confirmation",
      custom: function() 
        if (this.value !== this.field('password').value) 
          return "passwordMissmatch";
        
      
    ,
    createdAt: 
      type: Date,
      autoValue: function() 
        if (this.isInsert) 
          return new Date;
         else if (this.isUpsert) 
          return $setOnInsert: new Date;
         else 
          this.unset();
        
      
    ,
    profile: 
        type: Schema.UserProfile
    ,
    services: 
        type: Object,
        optional: true,
        blackbox: false
    
);

Meteor.users.attachSchema(Schema.User);

路线:

Router.route('/admin/admins', 
    controller: 'AdminController',
  name: 'adminAdmins',
  title: 'Admins',
  parent: 'adminHome',
);

Router.route('/admin/admins/new', 
    controller: 'AdminController',
    name: 'adminAdminNew',
    title: 'New Admin',
    parent: 'adminAdmins',
);

Router.route('/admin/admins/:_id/edit', 
    controller: 'AdminController',
  name: 'adminAdminEdit',
  title: 'Edit Admin',
    parent: 'adminAdmins',
    data: function() 
        return Meteor.users.findOne(this.params._id);
    
);

管理表格:

#autoForm collection="Meteor.users" doc=this id="adminAdminForm" type=formType

    > afQuickField name='profile.name'
    > afQuickField name='email'
    > afQuickField name='password'
    > afQuickField name='passwordConfirmation'

    <button type="submit" class="btn btn-block btn-secondary">Save Changes</button>
/autoForm

【问题讨论】:

【参考方案1】:

您应该添加 Hooks 才能修改集合 应该是这样的

AutoForm.hooks(
  adminAdminForm: 
    onSubmit: function (doc) 
        schemas.User.clean(doc);
        this.done();
        return false;
    ,
    onSuccess:function(operation, result, template)
        Router.go('users.show','username':template.data.doc.username);
    ,
    onError: function(operation, error, template) 
        console.log(operation,error)
    
  
);

您可以在专用文档https://github.com/aldeed/meteor-autoform#callbackshooks中找到更多详细信息

【讨论】:

以上是关于如何使用流星帐户和自动生成添加/编辑用户的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Bash 脚本自动添加用户帐户和密码?

将服务连接到现有的流星帐户

流星自动将地理位置保存到用户文档

如何在流星上创建自动增量字段?

在 Django 视图中将用户/帐户表添加到 Postgres

用于将用户添加到 iTunes Connect 帐户的 API