文字列化された JSON を引数として渡したいのですが、Angular はクエリの最後に & を追加し続けます。それが頭痛の原因です。
これが私がそれを呼び出す方法です:
$scope.products = ProductSvc.getProductsList('{branchId:{"$exists":"true"}}');
次に呼び出します:
ProductRes.q({'queryStr':params});
q の定義方法は次のとおりです。
var ProductRes = $resource('/products/:productId',
{ 'productId':'@productId','queryStr':'@query' },
{
'$save':{method:'POST', params:{'productId':'@productId'}, isArray:true},
'$get':{method:'GET', params:{'productId':'@productId'}},
'q':{method:'GET', isArray:true, url:'/products?:queryStr'},
'$query':{method:'GET', isArray:true, url:'/products'},
}
);
したがって、問題は angularJS GET です。
/products?{branchId:{"$exists":true}}& // <- This goddamn ampersand!!
そして、その余分なアンパサンドがバックエンドの誤動作を引き起こしています。
それを取り除く方法は?