在节点js环境和serverUrl

时间:2016-05-30 15:15:36

标签: javascript node.js parse-platform sdk client

我正在尝试在node.js环境中使用Parse Javascript SDK,我完全不知道为什么我不能让它工作。我在Swift iOS应用程序中使用Parse,所以我熟悉Parse客户端代码。

这是我正在尝试做的事情:

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();

当调用我的模块初始化函数时,在进行'find'调用之后,在node-debug中它只是挂起节点。在节点中它只退出应用程序,所以我没有错误。这可能是因为正在使用服务器的错误(硬编码)URL。

顺便说一下,我确实想要使用主密钥而不是Javascript密钥,但初始化方法需要使用Javascript密钥。

此外,当我单步执行Parse SDK代码时,我会听到这样的声明:

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

在RESTController.js中。它是从'config'对象中找到的服务器url,在我看来是parse-server使用的对象。因此,按照文档的指示设置serverUrl无效。

我没有使用正确的Parse NPM模块吗?我是node.js的新手。

我浪费了整个个人项目开发日!!

谢谢, 彼得...

UPDATE:我在Parse.serverUrl = ...的(几乎肯定是无用的)设置之后添加了以下代码行。这似乎解决了这个问题。

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

但是,这对我来说似乎是个黑客。如果有人做了我正在做的事情会告诉我我做错了什么(即正确的做法),我将不胜感激。

1 个答案:

答案 0 :(得分:0)

在发现'发现'调用,在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();