晚上好,
首先,我刚刚将 Parse.com 数据库移植到 Heroku,并使用 mLab mongo 数据库插件。其次,连接数据库的应用程序是用java编写的。为了将两者连接在一起,我使用 Parse4J 库。
我可以成功连接到数据库并查看数据库中的条目,所以我想这是一个胜利。但是,当我尝试在某些表中创建对象时,它并不是在数据库端创建它们。然而,在其他人身上它却工作得很好。我仔细检查了代码,看看是否犯了愚蠢的语法错误,但我看不到任何错误。
这是一个简单的方法,应该创建软件的新版本记录:
(数据库中的表称为“version”,它有“version”、“link”和“latest”参数以及默认的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() 方法中的参数已填写相关信息,尽管 restAPI key 不再适用于 heroku,所以我不太确定是否需要允许 REST 功能?话虽如此,应用程序中的检索方法工作得非常好,所以我很困惑。
编辑 2: 好的,所以我只是想我应该尝试使用回调来查看是否可以获得任何进一步的信息,我很高兴看到控制台打印了一个错误:
errorParseException [code=119, error=Permission denied for action create on class version.]
最佳答案
好的, 因此,在检查回调异常后,我注意到“创建”操作被拒绝。因此,我进入 mLab 上的架构表并注意到创建部分没有说“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"
}
在我更改了类权限的状态后,一切都按预期进行。对于最近从 Parse.com 迁移到带有 MongoDB 插件的 Heroku 的其他人,请检查 _SCHEMA 部分是否具有正确的权限,它可以为您节省大量时间,并防止您认为自己疯了。 :)
关于java - 使用 Heroku 迁移到 mLab 后创建 ParseObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38883934/