大家好,我是meanstack的新手。我想从mongodb中获取记录匹配的记录。我发送一个阵列,但它没有正常工作。请帮我解决这个问题。
以下是用角度侧描述发送参数的代码。
var output = [];
var i = 0;
angular.forEach(statedata, function(element) {
output.push(element._id);
});
$rootScope.stateconddata = output;
resourcedata(this.baseurl + '/getalldata?usertype=' + type + '&country=' + $rootScope.country + '&state=' + $rootScope.stateconddata + '&city=' + $rootScope.citydata + '&id=' + id, {}, {
query: {
method: 'GET',
headers: {
Accept: 'application/json'
}
}
}).$promise.then(function(response) {});
在NodeJS方面,我写了如下的查询:
if (querydata.state.length > 0) {
Queryset.where('state').in(querydata.state);
}
当我以下面的方式编写上面的代码时,它适用于单个元素,但不适用于多个元素。
if (querydata.state.length > 0) {
Queryset.where('state').in([querydata.state]);
}
简而言之,我想传递如下元素:
["582993205d40e67e09f5df28","682993205d40e67e09f5df28"]
不喜欢
582993205d40e67e09f5df28,682993205d40e67e09f5df28
答案 0 :(得分:0)
如果你需要在javascript中将数组转换为Object,就像这样:
var x = ['ahmed','mostafa','ebrahem'];
var myObj = {};
for(var i = 0 ; i < x.length ; i++){
myObj[i] = x[i];
}
如果您记录myObj变量,您将获得此结果
myObj = {
0 : "ahmed",
1: "mostafa",
2: "ebrahem"
};
答案 1 :(得分:0)
如果你想发送这样的数据:582993205d40e67e09f5df28,682993205d40e67e09f5df28
然后你需要发送一个字符串
var x = ['582993205d40e67e09f5df28','682993205d40e67e09f5df28'];
var myObj = "";
for(var i = 0 ; i < x.length ; i++){
if(i == i.length){
myObj += x[i];
}
else{
myObj += x[i] + ", ";
}
}
答案 2 :(得分:0)
答案 3 :(得分:0)
问题是您在查询字符串中手动序列化数组。让Angular完成所有GET
参数的工作,即将参数作为对象传递:
resourcedata(this.baseurl + '/getalldata', {
usertype: type,
country: $rootScope.country,
state: $rootScope.stateconddata,
city: $rootScope.citydata,
id: id
}, {
query: {
method: 'GET',
headers: { Accept: 'application/json' }
}
})
这应该将state
数组序列化为(假设为state=['x', 'y']
:
?...状态= X&安培;状态= Y
应该在服务器端处理为数组。
您可以阅读the documentation on $resource了解有关如何配置服务的详细信息。