我是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
。另外,我想创建没有密码的用户(我该怎么做?)。
答案 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,
});
}
});