0

晚上好,

首先,我刚刚将 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.initialize() 方法中的参数填充了相关信息,尽管 Heroku 不再提供 restAPI 密钥,所以我不太确定是否需要允许 REST 功能?话虽如此,应用程序中的检索方法工作得非常好,所以我很难过。

编辑 2: 好的,所以我只是想我应该通过回调尝试一下,看看是否可以获得任何进一步的信息,我很高兴看到控制台上打印了一个错误:

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

1 回答 1

1

好的,所以在检查了回调异常之后,我注意到“创建”操作被拒绝了。因此,我进入 mLab 上的 Schema 表,发现创建部分没有说“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 部分是否具有正确的权限,它可以为您节省大量时间并防止您认为自己发疯了。:)

于 2016-08-11T09:48:46.177 回答