首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Parse更新Parse对象

无法使用Parse更新Parse对象
EN

Stack Overflow用户
提问于 2016-08-03 21:03:59
回答 1查看 149关注 0票数 0

我正在测试一些基本的东西,这是混乱的。

解析JavaScript SDK v1.9.0:

代码语言:javascript
复制
<script src="parse.min.js"></script>
<script>
    Parse.initialize("KEY");
    Parse.serverURL = 'URL'
</script>

连接到Facebook:

window.fbAsyncInit =Parse.FacebookUtils.init(){ Parse.FacebookUtils.init({ appId:'ID',xfbml : true,version:'v2.7‘});};(函数(d,s,id){ var js,fjs = d.getElementsByTagName(s);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’);

获取当前用户:

代码语言:javascript
复制
    var user = Parse.User.current();

到现在为止一切都很好。我可以从用户那里阅读和显示。

当我试图更新用户时:

代码语言:javascript
复制
user.set("name","test");
user.save();

RangeError:超过了最大调用堆栈大小。

我检查了递归。这只叫了一次。不知道为什么会抛出这个错误。

编辑:以修复语法。错误仍然存在。

编辑2:如果我试图更新currentUser,或者如果我将另一个对象的指针设置为currentUser,则会得到相同的错误。示例:

下面将创建一个新的InterestObject,除非我将user列设置为指向currentUser的指针。然后我就得到了同样的错误。

代码语言:javascript
复制
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];
});
EN

回答 1

Stack Overflow用户

发布于 2016-08-04 03:41:34

我认为代码中的语法应该是:

代码语言:javascript
复制
user.set("name","test");

在你的例子中,你写道:

代码语言:javascript
复制
user.set("name"),"test"

更新

从您提供的代码中,我没有看到任何logIn调用来登录facebook。我做了一些附带的项目并设法做到了。我所做的是:

  1. 转到https://developers.facebook.com
  2. 创建Web类型的facebook应用程序
  3. 在您的facebook应用程序URL中,放置您的服务器URL (在我的示例中,我是在本地主机上这样做的,所以我将该URL放在我的应用程序所在的位置)
  4. 转到您的解析应用程序并编写以下代码:

代码语言:javascript
复制
<!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.我在2秒后执行它,只是为了确保Parse.FacebookUtils.init被执行(最好在回调内部执行,但是为了测试目的,我就这样做了)。然后,当我登录我的facebook帐户后,我会让用户进入成功块,更新他的名字,并再次保存它。然后,在我的解析仪表板中,我看到了以下内容:

还请确保您的当前用户在进行此操作之前记录了我们的日志,因为您可能有一个活动会话。为了做到这一点,只需调用

代码语言:javascript
复制
FB.User.logOut();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38753602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档