使用Heroku迁移到mLab后创建ParseObject

时间:2016-08-10 21:33:21

标签: java mongodb heroku parse-platform parse4j

晚上好,

首先,我刚将我的Parse.com数据库移植到Heroku,并使用了mLab mongo数据库。其次,连接数据库的应用程序是用java编写的。为了连接两者,我正在使用Parse4J库。

我可以成功连接到数据库并查看数据库中的条目,所以我想那里有一个胜利。但是,当我尝试在某些表中创建对象时,它不会在数据库端创建它们。然而,在其他人,它工作得很好。我仔细检查了代码,看看我是否犯了一个愚蠢的语法错误,但我看不到。

这是一个应该创建软件新版本记录的简单方法:

(数据库中的表被称为"版本",它的参数为"版本","链接"和"最新" ;以及默认的Parse.com创建的那些)

public void addNewVersion(){
    ParseObject object = new ParseObject("version");
    object.put("version", "1.3.3");
    object.put("link", "www.example.com");
    object.put("latest", false);
    object.saveInBackground()
    System.out.println("Version Saved Successfully);
}

奇怪的是,没有错误打印出来,println()语句成功打印到控制台。

感谢您阅读本文的一篇文章,我们将非常感谢任何意见。

:)

修改 根据要求,这是我的主要方法,其中初始化Parse连接:

public static void main(String args[]) {
    //Establishes which operating system is being used, for look and feel purposes
    getOS();

    Parse.initialize("applicationId", "restAPIKey", "serverPath");

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new GUI().setVisible(true);
        }
    });
}

Parse.initalize()方法中的参数用相关信息填写,虽然restoku不再可用于restoku,所以我不太确定是否需要允许REST功能?话虽如此,应用程序中的检索方法工作得非常好,所以我很难过。

编辑2: 好吧,所以我只是想我应该用回调试一下,看看能否得到更多信息,我很高兴看到控制台上有错误:

errorParseException [code=119, error=Permission denied for action create on class version.]

1 个答案:

答案 0 :(得分:1)

好, 因此,在检查回调异常后,我注意到“create”操作被拒绝。因此,我进入了mLab的Schema表,注意到create部分没有说“true”

{
"_id": "version",
"_metadata": {
    "class_permissions": {
        "get": {
            "*": true
        },
        "find": {
            "*": true
        },
        "update": {
            "*": true
        },
        "create": {
            "*": true
        },
        "delete": {},
        "addField": {
            "*": true
        },
        "readUserFields": [],
        "writeUserFields": []
    }
},
"version": "string",
"link": "string",
"latest": "boolean"

}

在我更改了类权限的状态后,一切都按预期工作。对于最近通过添加MongoDB从Parse.com迁移到Heroku的其他人,请检查_SCHEMA部分是否具有正确的权限,这可以节省您大量的时间并且可以防止您认为自己疯了。 :)