如何更改密码、电子邮件和 meteor 配置文件

How to change password, email and meteor profile

你好朋友一些可以指点我一些 material 比如更改密码,电子邮件和在个人资料中添加新字段,如性别,年龄城市添加照片。不使用集合或 aldeed-autoform。 所有这些都是用我自己的代码做的,所以有更多的控制一些 alded-autoform select 函数,比如 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"
  }

马塞尔拉玛,

我将分享我是如何做的。对于我的项目,我存储了 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);

将其存储在变量 returns 中 Mongo Id。

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

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

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

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);
  }
});

更新用户资料

模板

<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
        }
      }
    );

  }
});