我正在尝试在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");
但是,这对我来说似乎是个黑客。如果有人做了我正在做的事情会告诉我我做错了什么(即正确的做法),我将不胜感激。
答案 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();