您可以通过包装它们来搭载 Meteor 调用的函数。我还使用了accounts-ui 和accounts-password 包,并使用Underscore 的_.wrap 方法重新定义了loginWithPassword 函数。下划线默认包含在 Meteor 中。
我使用这样的东西登录:
Meteor.loginWithPassword = _.wrap(Meteor.loginWithPassword, function(login) {
// Store the original arguments
var args = _.toArray(arguments).slice(1),
user = args[0],
pass = args[1],
origCallback = args[2];
// Create a new callback function
// Could also be defined elsewhere outside of this wrapped function
var newCallback = function() { console.info('logged in'); }
// Now call the original login function with
// the original user, pass plus the new callback
login(user, pass, newCallback);
});
在这种特定情况下,上面的代码将在您的客户端代码中某处。
对于 Accounts.createUser,它可能看起来像这样(也在客户端代码中的某处):
Accounts.createUser = _.wrap(Accounts.createUser, function(createUser) {
// Store the original arguments
var args = _.toArray(arguments).slice(1),
user = args[0],
origCallback = args[1];
// Create a new callback function
// Could also be defined elsewhere outside of this wrapped function
// This is called on the client
var newCallback = function(err) {
if (err) {
console.error(err);
} else {
console.info('success');
}
};
// Now call the original create user function with
// the original user object plus the new callback
createUser(user, newCallback);
});
希望这会有所帮助。