【发布时间】:2015-07-30 07:44:57
【问题描述】:
我正在尝试访问 Meteor Accounts.onCreateUser 用户创建函数中名为 city 的变量,但我没有成功。我试图在 HTTP.get 调用结束时返回 city 并且还尝试在 HTTP.get 之外创建 city var 并在不使用 var 的情况下简单地设置 city 但这些事情似乎都没有奏效。当 console.log(city) 运行时,它会准确地输出所需的信息,因此这个变量一定不是问题。如果我犯了一个错误,请原谅我。
Accounts.onCreateUser( function (options, user) {
if (options.profile) {
options.profile.picturelrg = "http://graph.facebook.com/" + user.services.facebook.id + "/picture/?type=large";
user.profile = options.profile;
options.profile.picturesm = "http://graph.facebook.com/" + user.services.facebook.id + "/picture/?type=small";
options.profile.messenger = "https://www.messenger.com/t/" + user.services.facebook.id;
HTTP.get("http://ipinfo.io", function (error, result) {
var place = JSON.parse(result.content);
var city = place.city;
console.log(city);
});
options.profile.city = city;
}
return user;
});
【问题讨论】:
-
HTTP.get()是异步的,因此它会在脚本继续运行时单独执行。city在您尝试使用时还无法访问。您必须单独重构和设置值。试试Thinking Asynchronously (NodeCasts)。 -
感谢您的评论和回答。 “place”和“city”现在已成功保存到数据库。
标签: javascript meteor scope