将数组转换为angularjs中的对象

时间:2016-12-15 08:51:41

标签: javascript angularjs node.js mongodb

大家好,我是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

4 个答案:

答案 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)

您可以操纵一些数据。

var array = "582993205d40e67e09f5df28,682993205d40e67e09f5df28".split(',');

foo现在是一个对象 enter image description here

答案 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了解有关如何配置服务的详细信息。