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