2016-05-30 56 views
2

我想在node.js環境中使用解析Javascript SDK,我完全不知道爲什麼我無法使它工作。我在Swift iOS應用程序中使用Parse,所以我熟悉Parse客戶端代碼。在節點js環境和serverUrl解析JavaScript SDK

這裏就是我想要做的事:

var Parse = require('parse/node'); 

function ParseModule() { 
    var self = this; 

    self.initialize = function() { 
    return new Promise(function(resolve, reject) { 
     Parse.initialize("myAppID", "myJavascriptKey", "myMasterKey"); 
     Parse.serverUrl = "https://myserver.com/parse"; 
     Parse.Cloud.useMasterKey(); 

     var query = new Parse.Query("MyClassName"); 
     query.find() 
      .then(
       function(results) { 
        console.log("yay! it worked"); 
        resolve(); 
       } 
      ).catch(
       function(err) { 
        output.log("parse error: " + err); 
        reject(err); 
       } 
      ); 
     }); 
    } 

    return self; 
} 

module.exports = new ParseModule(); 

當我的模塊的初始化函數被調用,使「發現」號召,在節點調試後,它只是掛起節點。在節點中它只是退出應用程序,所以我沒有錯誤。這可能是因爲正在使用服務器的錯誤(硬編碼)URL。

順便說一句,我真的很想使用主鍵而不是Javascript鍵,但初始化方法需要Javascript鍵。

此外,當我通過解析SDK代碼一步,我得到這樣的說法:

var url = _CoreManager2['default'].get('SERVER_URL'); 
在RESTController.js

。如果來自'config'對象的服務器url,這在我看來是由parse-server使用的。因此,按照文檔指示設置serverUrl不起作用。

我沒有使用正確的Parse NPM模塊?我是node.js的新手。

我正在浪費我的整個個人項目開發日!

謝謝, 彼得...

更新:我已經添加下面的代碼行(幾乎可以肯定沒用)集Parse.serverUrl = ...之後。這似乎解決了這個問題。

Parse.CoreManager.set('SERVER_URL', "https://myserver.com/parse"); 

但是,這對我來說似乎是一種破綻。如果有人正在做類似我所做的事情會告訴我我做錯了什麼(即正確的做法),我將不勝感激。

+0

Parse.Cloud.useMasterKey();不工作。您應該改爲query.find({useMasterKey:true})。 – ChunTingLin

回答

0

進行'find'調用後,在node-debug中它只是掛起節點。在節點中它只是退出應用程序,所以我沒有錯誤。

還有2分。首先,Parse.Promise不是類似es6的承諾,它沒有catch功能。 https://parse.com/docs/js/api/classes/Parse.Promise.html

其次,由於js sdk捕獲異常,我遇到了很多問題。我找不到它。在你的代碼中,輸出沒有定義,所以output.log中有一個缺少的ReferenceError。

請嘗試以下代碼。

var Parse = require('parse/node'); 

function ParseModule() { 
    var self = this; 
    self.initialize = function() { 
    return new Promise(function(resolve, reject) { 

     Parse.initialize("myAppID", null, "myMasterKey"); 
     Parse.serverUrl = "http://localhost:1337/parse"; 
     //Parse.Cloud.useMasterKey(); 
     console.log(1); 
     var query = new Parse.Query("MyClassName"); 
     query.find({useMasterKey:true}).then(
      function(results) { 
       console.log(2); 
       console.log("yay! it worked"); 
       resolve(); 
      },function(err) { 
       try{ 
        console.log(3); 
        output.log("parse error: " + err); 
        reject(err); 
       } catch(error){ 
        console.log(4); 
        console.log(error); 
       } 
      } 
     ); 

    }); 
    } 

    return self; 
} 

module.exports = new ParseModule(); 
+0

謝謝你的回覆@ChunTingLin。是的,在發佈之後,我意識到這一點並不會與Parse Promises一起工作,並對此進行了更正。一個真正的Javascript/Node新手錯誤。 – psparago

+0

解析javascript sdk有一個不足之處。它會發現一些錯誤,所以你不能找到問題所在。我很多次都遭受了這個XD。 – ChunTingLin