関数を呼び出して値を取得するハッシュがあります。問題は、関数が本来の値ではなく内部の関数を返していることです。
(ユーザーはこのハッシュの上で定義されます)
私のハッシュ:
userInfo = {
id: user.id,
email: user.email,
cars: getCars(user.id),
}
この関数を呼び出すもの:
getCars = (userId) ->
id = parseInt(userId)
userRef = new Firebase("https://demo-firebase.firebaseIO.com/users/#{id}/")
userRef.on('value', (snapshot) ->
if snapshot.val() == null
["toyota"]
else
snapshot.val().cars # returns an array of cars
)
デバッガーで関数をステップ実行すると、ステートメントuserRef.on
内の正しい場所ではなく、行に戻ります。if/else
コンパイルされたJSは次のとおりです。
getCars = function(userId) {
var id, userRef;
id = parseInt(userId);
userRef = new Firebase("https://demo-firebase.firebaseIO.com/users/" + id + "/");
return userRef.on('value', function(snapshot) {
if (snapshot.val() === null) {
return ["toyota"];
} else {
return snapshot.val().cars;
}
});
};
なぜこれが起こっているのですか?私が見落としているのは単純なことだと確信しています。