使用随机用户名和密码

时间:2017-08-16 03:26:04

标签: javascript meteor meteor-accounts

我是Meteor的新手并且正在尝试开发在线同步游戏实验。通常,一旦参与者同意到同意书,我想创建一个用户并将该用户添加到我的Players集合中。

我的consent_page.js看起来像这样:

import './consent_page.html';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { Template } from 'meteor/templating';
import { Meteor } from 'meteor/meteor'
import '../../../api/players/methods.js'


Template.consent_page.events({
    'submit .consent-form'(event) {
        event.preventDefault();
        Meteor.call('players.addPlayer');
        FlowRouter.go('/instructions')
    }
});

我的players.addPlayer方法看起来像这样

import { Meteor } from 'meteor/meteor';
import { Accounts } from 'meteor/accounts-base';
import { Players } from './players.js';
import { Random } from 'meteor/random'

Meteor.methods({
    'players.addPlayer'() {
        console.log('I am in the method');
        username = Random.id();
        user = create_user(username);

        alert(username);
        alert(user);

        Players.insert({
            _id: this.userId,
            enterTime: new Date(),
            status: 'instructions',
            passedQuiz: false,
            quizAttempts: 0,
            needRematch: false,
            condition: 'control'
        });
    }
});


/*
* Helper functions for the methods
*/
//create user in the server
create_user = function (username) {
    return Accounts.createUser({
        username: username,
    });
};

集合Players.js具有集合的定义。

import { Mongo } from 'meteor/mongo'
export const Players = new Mongo.Collection('players');

然而,这不起作用。我确实被重定向到说明页面,但用户没有被创建..我收到以下错误:

Error invoking Method 'players.addPlayer': Method 'players.addPlayer' not found [404]

虽然,我在控制台中打印了I am in the method消息。返回create_user的提醒为undefined。另外,我想创建没有密码的用户(我该怎么做?)。

1 个答案:

答案 0 :(得分:2)

Accounts.createUser()方法是accounts-base包的一部分。您首先需要import that。我正在从我的工作项目中分享一个片段。希望这会有所帮助:

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

const bcrypt = require('bcrypt');

Meteor.methods({
  'user.create':function(data){
       return Accounts.createUser({
         name: data.name,
         username: data.userId,
         password: data.password,
       });
  }
});