我对 Meteor 很陌生,正在尝试开发一个在线同步游戏实验。一般来说,一旦参与者同意同意书,我想创建一个用户并将该用户添加到我的玩家集合中。
我的 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
。另外,我想创建没有密码的用户(我该怎么做?)。
最佳答案
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,
});
}
});
关于javascript - 使用随机用户名和无密码在服务器上创建用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704648/