【问题标题】:How to change password, email and meteor profile如何更改密码、电子邮件和流星配置文件
【发布时间】:2017-02-06 21:11:54
【问题描述】:

你好朋友们可以指点我一些材料,比如修改密码、电子邮件和在个人资料中添加新字段,如性别、年龄城市添加照片。不使用集合或 aldeed-autoform。 所有这些都是用我自己的代码完成的,因此对一些 alded-autoform 选择功能(如 select 或 datepicker)进行更多控制在设计中看起来并不好。

Something like the image

Template.update.events({
  'submit form' ( event, template ) {
    event.preventDefault();

    const target = event.target;

    var oldPass = $('#password');
    var newPass = $('#password-new');
    var verifyPass = $('#password-confirm');

    if(newPass.val() === verifyPass.val()){
            Accounts.changePassword(oldPass.val(), verifyPass.val(), function(err){
                if(err) {
                    console.log(err);
                } else {
                    let profile = {
                      address: {
                        city: target.city.value,
                        street: target.street.value
                      },
                      gender: target.gender.value,
                      favoriteColor: target.favoriteColor.value,
                    }
                      console.log("datos actualizados");
                }
            });

            oldPass.val('');
            verifyPass.val('');
            newPass.val('');

        } else {
            console.log("password no match");
        }
    //}
    console.log(profile);

    Meteor.call('updateUser', profile);
  }
});
{
  _id: "bbca5d6a-2156-41c4-89da-0329e8c99a4f",  
  emails: [
    { address: "cool@example.com", verified: true },
  ],
  createdAt: Wed Aug 21 2013 15:16:52 GMT-0700 (PDT),
  profile: {
    name: "Joe Schmoe",
    phone: "5555-555-555",
    gender: "male",
    city: "DC",
    country: "USA",
      birthday: "01-01-2017"
  }

【问题讨论】:

标签: javascript meteor meteor-blaze meteor-accounts


【解决方案1】:

马塞拉玛,

我将分享我是如何做到这一点的。对于我的项目,我正在存储诸如 Skype ID 和时区之类的内容。所以当我在 Meteor Method 中创建一个新用户时

    Accounts.createUser({
        email: 'example@example.com',
        password: 'testing',
        profile: {
            name: "Jack",
            gender: "Male",
            skypeid: "jack123",
            timezone: {
                name: "UTC",
                offset: "UTC"
            }
        }
    });

你也可以这样做。

let newUser = { ... };
let user = Accounts.createUser(newUser);

将其存储在变量中会返回 Mongo Id。

然后当你去更新配置文件时,你可以这样做。

Meteor.users.update({ _id: user }, { $set: { "profile.name": "Jake" } });

如果您在尚不存在的字段上使用 Meteor.users.update,它将使用您指定的值创建该字段,但请确保您在键周围使用“引号”。

Meteor.users.update({ _id: user }, 
  { 
     $set: { "profile.address.city": "Orlando" } 
  }
);

这里是官方文档。 http://docs.meteor.com/api/accounts.html

这是一个非常基本的例子

包 ---

meteor add accounts-base
meteor add accounts-password
npm install --save bcrypt

模板---

    <template name="signup">
     <form>
      <input type="email" name="email"><br>
      <input type="password" name="password"><br>
      <input type="text" name="name"><br>
      <input type="submit" value="submit">
    </form>
   </template>

事件---

import { Meteor } from 'meteor/meteor';    

   Template.signup.events({
      'submit form' ( event, template ) {
        event.preventDefault();

        const target = event.target;

        let newUser = {
          email: target.email.value,
          password: target.password.value,
          profile: {
            name: target.name.value
          }
        }

        Meteor.call('createNewUser', newUser);
      }
    });

方法---

import { Meteor } from 'meteor/meteor';
import { Accounts } from 'meteor/accounts-base';

Meteor.methods({
  'createNewUser' ( userObj ) {
    let user = Accounts.createUser(userObj);

    user = Accounts.users.findOne(user);

    console.log(user);
  }
});

【讨论】:

  • 您好,感谢@jkdowdle,感谢您将输入数据分配给您提到的内容`
  • 抱歉编辑不好,我编辑不好或试图调整这里的代码@jkdowdle
  • @Marcelrama,我刚刚添加了一个如何创建帐户的基本示例,只是为了澄清一下,您是在问如何更改用户密码吗?如果你喜欢,我可以给你举个例子
  • 如果正确的话,我已经可以添加用户什么了,我不能在开始时编辑他们的字段我只是要求一个电子邮件和密码,但是注册后,我希望你填写其他字段,如性别,城市,电话,国家,照片,正如你提到的,可以使用 $ Set: {"profile.address.city": "Orlando"} 创建除此之外,我还希望用户更改或更新他们的密码,电子邮件并与其他新字段一起命名。我已经尝试过文档,但它非常复杂,对于开始与流星合作的人来说不是那么详细。
  • 我同意理解文档可能很困难。让我举例说明如何从“个人资料页面”更新个人资料
【解决方案2】:

更新用户资料

模板

<template name="update">
  <form>
    <input type="text" name="gender" placeholder="gender"><br>
    <input type="text" name="favoriteColor" placeholder="color"><br>
    <input type="text" name="city" placeholder="city"><br>
    <input type="text" name="street" placeholder="street"><br>
    <input type="submit" value="submit">
  </form>
</template>

客户端事件

Template.update.events({
  'submit form' ( event, template ) {
    event.preventDefault();

    const target = event.target;

    let profile = {
      address: {
        city: target.city.value,
        street: target.street.value
      },
      gender: target.gender.value,
      favoriteColor: target.favoriteColor.value,
    }

    console.log(profile);

    Meteor.call('updateUser', profile);
  }
});

流星法

import { Meteor } from 'meteor/meteor';

Meteor.methods({
  'updateUser' ( profileObj ) {
    let userId = Meteor.userId();

    console.log(userId);

    Meteor.users.update(
      { '_id': userId },
      { '$set': {
          'profile.gender': profileObj.gender,
          'profile.favoriteColor': profileObj.favoriteColor,
          'profile.address': profileObj.address
        }
      }
    );

  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2023-03-22
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2021-06-04
    相关资源
    最近更新 更多