【问题标题】:Parse Javascript SDK in a node js environment and serverUrl在 node js 环境和 serverUrl 中解析 Javascript SDK
【发布时间】:2016-05-30 15:15:35
【问题描述】:

我正在尝试在 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();

当调用我的模块的初始化函数时,在进行“查找”调用后,在节点调试中它只是挂起节点。在节点中它只是退出应用程序,所以我没有收到错误。这可能是因为使用了错误的(硬编码)服务器 URL。

顺便说一句,我真的很想使用主密钥而不是 Javascript 密钥,但初始化方法需要 Javascript 密钥。

此外,当我单步执行 Parse 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");

但是,这对我来说似乎是一个 hack。如果正在做与我正在做的事情相似的人能告诉我我做错了什么(即正确的方法),我将不胜感激。

【问题讨论】:

  • Parse.Cloud.useMasterKey();是不行的。您应该改为 query.find({useMasterKey:true} )。

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


【解决方案1】:

在调用 'find' 后,在节点调试中它只是挂起节点。在节点中它只是退出应用程序,所以我没有收到错误。

有 2 点。首先,Parse.Promise 不是类 es6 的 promise,它没有 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();

【讨论】:

  • 感谢@ChunTingLin 的回复。是的,在发布此内容后,我意识到 catch 不适用于 Parse Promises 并纠正了这一点。一个真正的 Javascript/Node 新手错误。
  • parse javascript sdk有个缺点。它会捕获一些错误,因此您无法找到问题所在。我遭受了很多次XD。
  • 谢谢,我也遇到了同样的问题,这让我快疯了。从 Parse 源代码中,我发现了以下内容: ``` set serverURL(value) { _CoreManager.default.set('SERVER_URL', value); }, ``` 看起来像个成员,但仔细看不是setServerURL,而是setserverURL。它看起来像一个错字,但它似乎意味着什么。我找不到可以告诉我什么的参考资料。
猜你喜欢
  • 2021-12-08
  • 2018-06-17
  • 2014-07-20
  • 2017-06-25
  • 2020-10-29
  • 2015-07-31
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
相关资源
最近更新 更多