2015-06-21 79 views
1

我在解析数据库中有一个表(Gtree),与用户有一对一的关系。我如何获得价值(与当前用户相关的内容)并保存到全局变量中?如何从解析数据库中保存全局变量值

Parse.initialize("key", "key"); 
var Gtree = Parse.Object.extend("Gtree"); 
var output = ""; 

function loadTree() { 
    var query = new Parse.Query(Gtree); 
    query.include("user"); 
    query.equalTo("user", Parse.User.current()); 
    query.find({ 
     success: function(results) { 
      for (var i in results) { 
       var content = results[i].get("content"); 
       var user = results[i].get("user"); 
       var username = user.get("username"); 
       var id = results[i].id; 
       output = content; 
       console.log("CONTENT:" + content); 
      } 
     }, 
     error: function(error) { 
      console.log("Query Error:" + error.message); 
     } 
    }); 
} 
+0

不清楚应该保存什么和在哪里。确切的问题是什么? – phts

+0

我需要从Gtree.content的var输出中保存值 –

回答

0

query.find()返回一个Parse.Promise对象和它的简单缓存并返回,而不是实际的结果(S)。

你可能想要这样的东西。

Parse.initialize("key", "key"); 
var Gtree = Parse.Object.extend("Gtree"); 

var promiseCache = {}; 

function loadTree() { 
    if(!promiseCache.gtree_user) { 
     var query = new Parse.Query(Gtree); 
     query.include("user"); 
     query.equalTo("user", Parse.User.current()); 
     promiseCache.gtree_user = query.first().then(function(result) { 
      return { 
       content: result.get("content"), 
       user: result.get("user"), 
       username: result.get("user").getUsername(), 
       id: result.id 
      }; 
     }, function(error) { 
      console.log("Query Error:" + error.message); 
      return error; 
     }); 
    } 
    return promiseCache.gtree_user; 
} 

这样的loadTree()任何呼叫是保证返回的承诺和用户数据只能通过承诺方法访问,例如:

loadTree().then(function(userData) { 
    // userData.content, userData.user, userData.username, userData.id are available here 
}, function(error) { 
    // handle error case hare 
}); 

也请注意,全局命名空间应该避免,因为它很容易命名冲突和安全漏洞。上面的代码会更好地包装在例如。一个自我执行的函数或一个onload事件处理程序。

相关问题