ngresource 无法使用基于 oData 的 Rest Controller 正确过滤
ngresource not filtering properly with oData based Rest Controller
我有一个基于 Web api 的控制器,在后端使用 MongoDb。
public class NodesRestController : ApiController
{
private INodeService _nodeService;
public NodesRestController(INodeService nodeService)
{
_nodeService = nodeService;
}
[EnableQuery()]
public IQueryable<Node> Get()
{
return _nodeService.GetAllNodes().AsQueryable();
}
[EnableQuery()]
public Node Get(Guid id)
{
return _nodeService.GetNodeById(id);
}
}
在 angular 应用程序中,我的资源看起来像
(function() {
'use strict';
var nodeServiceRoot = '/api/NodesRest/:id';
angular.module('common.service')
.factory("nodeResource", ["$resource", "appSettings", nodeResource])
function nodeResource($resource, appSettings) {
return $resource(appSettings.serverPath + nodeServiceRoot, {
id: '@id'
}, {
"update": {
method: "PUT"
}
});
}}());
节点集合看起来像下面的多个实例。
{
"_id" : LUUID("982d248a-ef2a-f94c-be93-96ff67ca1d3f"),
"Name" : "RTR1",
"IP" : "1.2.221.121",
"NodeGroup" : {
"_id" : LUUID("36a38db3-830c-4a45-8b9c-63b16394f985"),
"Name" : "Group One"
}}
我正在尝试获取 NodeGroup.Name = "Group One" 的所有节点,但我将所有节点都取回了。
var nodesInNodeGroup = nodeResource.query({ 'NodeGroup/Name': vm.CurrJob.NodeGroup.Name});
nodesInNodeGroup.$promise.then(function (response) {
nodesInNodeGroup = response;
});
vm.CurrJob.NodeGroup.Name = 'Group One'
好心帮助。
您的控制器不是 ODataController
。
我有一个基于 Web api 的控制器,在后端使用 MongoDb。
public class NodesRestController : ApiController
{
private INodeService _nodeService;
public NodesRestController(INodeService nodeService)
{
_nodeService = nodeService;
}
[EnableQuery()]
public IQueryable<Node> Get()
{
return _nodeService.GetAllNodes().AsQueryable();
}
[EnableQuery()]
public Node Get(Guid id)
{
return _nodeService.GetNodeById(id);
}
}
在 angular 应用程序中,我的资源看起来像
(function() {
'use strict';
var nodeServiceRoot = '/api/NodesRest/:id';
angular.module('common.service')
.factory("nodeResource", ["$resource", "appSettings", nodeResource])
function nodeResource($resource, appSettings) {
return $resource(appSettings.serverPath + nodeServiceRoot, {
id: '@id'
}, {
"update": {
method: "PUT"
}
});
}}());
节点集合看起来像下面的多个实例。
{
"_id" : LUUID("982d248a-ef2a-f94c-be93-96ff67ca1d3f"),
"Name" : "RTR1",
"IP" : "1.2.221.121",
"NodeGroup" : {
"_id" : LUUID("36a38db3-830c-4a45-8b9c-63b16394f985"),
"Name" : "Group One"
}}
我正在尝试获取 NodeGroup.Name = "Group One" 的所有节点,但我将所有节点都取回了。
var nodesInNodeGroup = nodeResource.query({ 'NodeGroup/Name': vm.CurrJob.NodeGroup.Name});
nodesInNodeGroup.$promise.then(function (response) {
nodesInNodeGroup = response;
});
vm.CurrJob.NodeGroup.Name = 'Group One'
好心帮助。
您的控制器不是 ODataController
。