您正在寻找的是使用 Accounts.createUser() 时配置文件的额外选项。有关如何使用的更多详细信息,请查看文档:http://docs.meteor.com/#/full/accounts_createuser。
profile 选项采用一个对象,该对象正在添加到与用户关联的数据库文档中。试了下面的例子后,运行下面的命令,看看是不是存入了数据库。
In the directory of your project:
$ meteor mongo
$ db.users.find()
以下示例返回:
{ "_id" : "kJNaCtS2vW5qufwJs", "createdAt" : ISODate("2015-05-11T20:50:21.484Z"), "services" : { "password" : { "bcrypt" : "$2a$10$LrcZ5lEOlriqvkG5pJsbnOrfLN1ZSCNLmX6NP4ri9e5Qnk6mRHYhm" }, "resume" : { "loginTokens" : [ { "when" : ISODate("2015-05-11T20:50:21.493Z"), "hashedToken" : "CXKwUhEkIXgdz61cHl7ENnHfvdLwe4f0Z9BkF83BALM=" } ] } }, "emails" : [ { "address" : "sharkbyte@someemail.com", "verified" : false } ], "profile" : { "firstName" : "shark", "lastName" : "byte" } }
作为一个警告,我没有使用accounts-ui,只使用没有内置ui的accounts-password。但这里是如何创建一个带有额外字段的简单创建帐户模板(在此示例中:名字和姓氏以及组织)。
html代码:
<head>
<title>test</title>
</head>
<body>
<!-- checks if someone is logged in -->
{{#if currentUser}}
{{> userPage}}
{{else}}
{{> loginPage}}
{{/if}}
</body>
<template name="userPage">
<button id="logout">logout</button>
<p>You are logged in!</p>
</template>
<template name="loginPage">
<form><!-- create account form, use a different one for normal logging in -->
<input type="text" id="firstName" placeholder="First Name">
<input type="text" id="lastName" placeholder="Last Name">
<input type="text" id="organization" placeholder="Organization (optional)">
<input type="text" id="email" placeholder="Email Address">
<input type="password" id="password" placeholder="Password">
<input type="password" id="confirmPassword" placeholder="Confirm Password">
<input type="submit" id="createAccount" value="Create Account">
</form>
</template>
javascript代码:
if (Meteor.isClient) {
Template.loginPage.events({
'submit form': function(event, template) {
event.preventDefault();
console.log('creating account');
var passwordVar = template.find('#password').value;
var confirmVar = template.find('#confirmPassword').value;
if (passwordVar === confirmVar) {
Accounts.createUser({
email: template.find('#email').value,
password: passwordVar,
// you can add wherever fields you want to profile
// you should run some validation on values first though
profile: {
firstName: template.find('#firstName').value,
lastName: template.find('#lastName').value
}
});
}
}
});
// make sure to have a logout button
Template.userPage.events({
'click #logout': function(event, template) {
Meteor.logout();
}
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
});
}