【问题标题】:Cannot remove email using Accounts Package in Meteor无法使用 Meteor 中的帐户包删除电子邮件
【发布时间】:2015-10-06 15:25:33
【问题描述】:

当尝试在服务器端使用下面列出的基本帐户方法之一时,我总是收到以下类型的错误:

TypeError: Object # has no method 'removeEmail'

服务器方法:

  • Accounts.addEmail()
  • Accounts.removeEmail()
  • Accounts.findUserByUsername()
  • Accounts.findUserByEmail()

我已经从应用程序内部和 REPL shell 尝试过。

我使用的与帐户相关的软件包:

  • 流星平台
  • 账户密码
  • 帐户-facebook
  • pauli:accounts-linkedin
  • 账户-推特
  • splendido:accounts-emails-field
  • 帐户基础
  • alanning:角色

【问题讨论】:

  • 只是想在这里添加我的 5 美分,我也遇到了类似的问题,但仍然没有找到方法。如果您在onCreateUser 之类的回调中运行它,似乎它不可用。在服务器端(不在发布回调中)运行时,您要查找的部分是 AccountServer。文档说您可以在 AccountsCommon 上创建一个子类,并根据需要实现您自己的 userId(),但不知道如何......您可以在这里看到 github.com/meteor/meteor/blob/master/packages/accounts-base/…

标签: meteor accounts


【解决方案1】:

您可能正在运行 Meteor 1.2 之前的 Meteor 版本。我认为您提到的所有功能都是在 1.2 中添加的。要检查您的流星版本,请运行:

meteor --version

如果这不是问题,请提供导致您提到的错误的确切代码。

仅供参考,以下显示这些方法存在于我的 Meteor 1.2 安装中以及您提到的软件包中:

[brettle@localhost test-app]$ meteor --version
Meteor 1.2.0.2
[brettle@localhost tmp]$ meteor create test-app
Created a new Meteor app in 'test-app'.       

To run your new app:                          
  cd test-app                                 
  meteor                                      

If you are new to Meteor, try some of the learning resources here:
  https://www.meteor.com/learn                

[brettle@localhost tmp]$ cd test-app

#### Note "meteor add accounts-password" also works instead of this next line: 

[brettle@localhost test-app]$ meteor add accounts-password accounts-facebook pauli:accounts-linkedin accounts-twitter splendido:accounts-emails-field accounts-base alanning:roles

Changes to your project's package version selections:

accounts-base                    added, version 1.2.1
accounts-facebook                added, version 1.0.6
accounts-oauth                   added, version 1.1.7
accounts-password                added, version 1.1.3
accounts-twitter                 added, version 1.0.6
alanning:roles                   added, version 1.2.14
ddp-rate-limiter                 added, version 1.0.0
email                            added, version 1.0.7
facebook                         added, version 1.2.2
localstorage                     added, version 1.0.5
npm-bcrypt                       added, version 0.7.8_2
oauth                            added, version 1.1.6
oauth1                           added, version 1.1.5
oauth2                           added, version 1.1.5
pauli:accounts-linkedin          added, version 1.1.2
pauli:linkedin                   added, version 1.1.2
rate-limit                       added, version 1.0.0
service-configuration            added, version 1.0.5
sha                              added, version 1.0.4
splendido:accounts-emails-field  added, version 1.2.0
srp                              added, version 1.0.4
twitter                          added, version 1.1.5


accounts-password: Password support for accounts
accounts-facebook: Login service for Facebook accounts
pauli:accounts-linkedin: Accounts service for LinkedIn accounts
accounts-twitter: Login service for Twitter accounts
splendido:accounts-emails-field: Adds to the user obj a `registered_emails`
field containing 3rd-party account service emails.
accounts-base: A user account system          
alanning:roles: Authorization package for Meteor
[brettle@localhost test-app]$ meteor &        
[1] 21185
[[[[[ ~/tmp/test-app ]]]]]                    

=> Started proxy.                             
=> Started MongoDB.                           
=> Started your app.                          

=> App running at: http://localhost:3000/
I20151007-23:49:34.554(-7)? ** You've set up some data subscriptions with Meteor.publish(), but
I20151007-23:49:34.555(-7)? ** you still have autopublish turned on. Because autopublish is still
I20151007-23:49:34.555(-7)? ** on, your Meteor.publish() calls won't have much effect. All data
I20151007-23:49:34.555(-7)? ** will still be sent to all clients.
I20151007-23:49:34.555(-7)? **
I20151007-23:49:34.556(-7)? ** Turn off autopublish by removing the autopublish package:
I20151007-23:49:34.556(-7)? **
I20151007-23:49:34.556(-7)? **   $ meteor remove autopublish
I20151007-23:49:34.556(-7)? **
I20151007-23:49:34.556(-7)? ** .. and make sure you have Meteor.publish() and Meteor.subscribe() calls
I20151007-23:49:34.556(-7)? ** for each collection that you want clients to see.
I20151007-23:49:34.556(-7)? 

[brettle@localhost test-app]$ meteor shell

Welcome to the server-side interactive shell!

Tab completion is enabled for global variables.

Type .reload to restart the server and the shell.
Type .exit to disconnect from the server and leave the shell.
Type .help for additional help.

> Accounts.removeEmail
[Function]
> Accounts.addEmail
[Function]
> Accounts.findUserByUsername
[Function]
> Accounts.findUserByEmail
[Function]

【讨论】:

  • 你当然是对的。这就是原因。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
相关资源
最近更新 更多