2016-08-03 13 views
0

いくつかの基本的なことをテストしていますが、これは混乱します。Parse JS SDKでParseオブジェクトを更新できません

解析のJavaScript SDK v1.9.0:Facebookへ投稿

<script src="parse.min.js"></script> 
<script> 
    Parse.initialize("KEY"); 
    Parse.serverURL = 'URL' 
</script> 

接続:すべての罰金これまでの

var user = Parse.User.current(); 

window.fbAsyncInit = function() { 
    Parse.FacebookUtils.init({ 
     appId  : 'ID', 
     xfbml  : true, 
     version : 'v2.7' 
    }); 
}; 

(function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

現在のユーザーを取得します。私はユーザーから読んで表示することができます。

私は、ユーザー更新しよう:

user.set("name","test"); 
user.save(); 

例外RangeErrorを:最大コールスタックサイズを超えました。

再帰を確認しました。これは1回だけ呼び出されます。なぜこのエラーがスローされるのか分かりません。

EDIT:構文を修正します。まだエラーがあります。

EDIT 2:currentUserを更新しようとした場合、または別のオブジェクトのポインタをcurrentUserに設定した場合、同じエラーが発生します。例:

次の例では、ユーザー列をcurrentUserへのポインタとして設定しない限り、新しいInterestObjectを作成します。それから私は同じエラーを取得します。

私はあなたのコード内の構文があるべきだと思う
var currentUser = Parse.User.current(); 
var InterestObject = Parse.Object.extend("CadetsInterest"); 
var intObj = new InterestObject(); 
intObj.save({ 
user: currentUser, 
cadets: [checkCadets state], 
cadets2: [checkCadets2 state], 
cwg: [checkCWG state], 
question: [txtQuestion stringValue] 
}).then(function(object) { 
[viewSuccess setHidden: NO]; 
[viewInterest setHidden: YES]; 
}); 

答えて

1

user.set("name","test"); 

とあなたのケースでは、あなたが書いた:

user.set("name"),"test" 

UPDATE

をあなたのコードから私はfacebookでログインするためにlogIn呼び出しを見ない。 私はいくつかのサイドプロジェクトを行い、それを行うことができました。私がやったことは以下の通りです:

  1. ゴー
  2. https://developers.facebook.comに型ウェブのFacebookアプリを作成し、あなたのFacebookアプリのURLで
  3. は、私の場合には(サーバーのURLを入れて、私は入れて私のローカルホスト上でそれをやりました私のアプリがホストされているURL)
  4. は、次のコードを入れて、あなたのパースのアプリに移動し、書き込み:

<!doctype html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 

 
    <title>My Parse App</title> 
 
    <meta name="description" content="My Parse App"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <link rel="stylesheet" href="css/reset.css"> 
 
    <link rel="stylesheet" href="css/styles.css"> 
 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
 
    <script type="text/javascript" src="http://www.parsecdn.com/js/parse-latest.js"></script> 
 
</head> 
 

 
<body> 
 

 
    <div id="main"> 
 
    <h1>You're ready to use Parse!</h1> 
 

 
    <p>Read the documentation and start building your JavaScript app:</p> 
 

 
    <ul> 
 
     <li><a href="https://www.parse.com/docs/js_guide">Parse JavaScript Guide</a> 
 
     </li> 
 
     <li><a href="https://www.parse.com/docs/js">Parse JavaScript API Documentation</a> 
 
     </li> 
 
    </ul> 
 

 
    <div style="display:none" class="error"> 
 
     Looks like there was a problem saving the test object. Make sure you've set your application ID and javascript key correctly in the call to <code>Parse.initialize</code> in this file. 
 
    </div> 
 

 
    <div style="display:none" class="success"> 
 
     <p>We've also just created your first object using the following code:</p> 
 

 
     <code> 
 
      var TestObject = Parse.Object.extend("TestObject");<br/> 
 
      var testObject = new TestObject();<br/> 
 
      testObject.save({foo: "bar"}); 
 
     </code> 
 
    </div> 
 
    </div> 
 

 
    <script type="text/javascript"> 
 
    Parse.initialize("{PARSE_APP_ID}"); 
 
    Parse.serverURL = '{PARSE_SERVER_URL}' 
 

 
    window.fbAsyncInit = function() { 
 
     Parse.FacebookUtils.init({ 
 
     appId: '{YOUR_FB_APP_ID}', 
 
     xfbml: true, 
 
     version: 'v2.7' 
 
     }); 
 
    }; 
 

 
    (function(d, s, id) { 
 
     var js, fjs = d.getElementsByTagName(s)[0]; 
 
     if (d.getElementById(id)) { 
 
     return; 
 
     } 
 
     js = d.createElement(s); 
 
     js.id = id; 
 
     js.src = "//connect.facebook.net/en_US/sdk.js"; 
 
     fjs.parentNode.insertBefore(js, fjs); 
 
    }(document, 'script', 'facebook-jssdk')); 
 

 

 
    setTimeout(function() { 
 
     Parse.FacebookUtils.logIn(null, { 
 
     success: function(user) { 
 

 
      user.set("name", "test"); 
 
      user.save(); 
 

 
     }, 
 
     error: function(user, error) { 
 
      alert("User cancelled the Facebook login or did not fully authorize."); 
 
     } 
 
     }); 
 
    }, 2000); 
 
    </script> 
 
</body> 
 

 
</html>
をこのコードでは

私はあなたがやったとまったく同じ手順を行いますが、その後、私はParse.FacebookUtils.logInに呼び出します。 Parse.FacebookUtils.initが実行されたことを確認するために2秒後に実行しています(コールバックの内部で行う方が良いですが、テスト目的ではそのようにしました)。 その後、私はFacebookのアカウントでログインした後、ユーザーを成功ブロックに入れ、名前を更新してもう一度保存します。 はその後、私の構文解析ダッシュボードに私は以下を参照してください。

enter image description here

も多分あなたはアクティブなセッションを持っている可能性がありますので、あなたの現在のユーザーは、私たちにそれを行う前に記録されていることを確認してください。 を呼び出すには

FB.User.logOut(); 
+0

構文をよく理解してください。すべてのトラブルシューティングでちょっと絡んできただけです。正しい構文で、私はまだオーバーフローエラーを受け取ります。 –

+0

こんにちは、ログインした後で唯一行っていることは、ユーザー名を設定することですか?あなたがオブジェクトを参照している可能性があるので、私は尋ねていますか? –

+0

私はこの記事の例を簡略化しました。ユーザーはプロフィール(名前、電話番号など)を更新することが許可されるべきです。別のシナリオに関する詳細については、私の編集したポストを参照してください。 –

関連する問題