我对MEAN堆栈开发很新,并且昨天才开始。我试图通过使用链接到服务器端控制器的资源调用从数据库中恢复数据。但是我收到以下控制台错误"错误:[$ resource:badcfg]操作Exception in thread "Thread-0" java.lang.NoClassDefFoundError: Models/PostObject
at server.Database.getPosts(Database.java:101)
at server.ServerThread.run(ServerThread.java:47)
Caused by: java.lang.ClassNotFoundException: Models.PostObject
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
的资源配置出错。预期的响应包含一个数组,但得到一个对象"
角度控制器:
query
Server.js:
app.
controller('ArticleCtrl', function($scope, $location, $resource){
var articles = $resource('/api/articles');
articles.query(function(result){
console.log(result);
});
$scope.addnew = function(){
$location.path("/administrationarea/articles/newarticle");
}
});
服务器端控制器:
articlesController = require('./server/controller/article-controller');
app.get('/api/articles', articlesController.list);
app.post('/api/articles', articlesController.create);
任何人都可以告诉我为什么会发生这种情况并提供解决方案,以便将数据作为数组而不是对象返回。
答案 0 :(得分:9)
错误是因为
var articles = $resource('api/articles');
articles.query(function(result){
// here result should be an array.
console.log(result);
});
这里的articles.query期望一个数组。但不是一个对象。
如果您的api返回一个对象,那么您应该使用articles.get()。
articles.get(function(result){
// here result should be an object but not array
console.log(result);
});
$ resource.query()用于从REST API获取数组,$ resource.get()用于从REST API获取对象。但在这两种情况下,请求类型(/ method)都只是'get'。