2015-06-21 78 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事件處理程序。

相關問題