2016-12-15 3 views
0

Hallo an alle ich bin neu in Meanstack. Ich möchte Datensätze von Mongodb holen, die ids übereinstimmen. Ich sende ein Array, aber es funktioniert nicht richtig. Bitte helfen Sie mir, dieses Problem zu lösen.konvertieren Sie das Array zu einem Objekt in angularjs

Nachstehend ist der Code, der meinen sendenden Parameter in der winkligen Seite beschreibt.

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) {}); 

in NodeJS Seite schrieb ich die Abfrage wie folgt:

if (querydata.state.length > 0) { 
    Queryset.where('state').in(querydata.state); 
} 

, wenn ich in folgenden Art und Weise über Code geschrieben hat, dann funktioniert es für einzelne Element in Ordnung, aber für mehrere Elemente funktioniert nicht.

if (querydata.state.length > 0) { 
    Queryset.where('state').in([querydata.state]); 
} 

Kurz gesagt möchte ich Elemente wie unten weitergeben müssen:

["582993205d40e67e09f5df28","682993205d40e67e09f5df28"] 

nicht

582993205d40e67e09f5df28,682993205d40e67e09f5df28 
+0

Wie wäre es mit 'Queryset.where ('state'). In (querydata.state);' wobei 'querydata.state' ein Array ist. –

+0

wenn ich Queryset schreibe.wo ([ „582993205d40e67e09f5df28“, „682993205d40e67e09f5df28“]), dann fein es arbeiten möchte ich diese Art von Array –

Antwort

0

mögen, wenn Sie Array conver müssen wie diese Javascript-Weg zum Objekt:

var x = ['ahmed','mostafa','ebrahem']; 
var myObj = {}; 
for(var i = 0 ; i < x.length ; i++){ 
    myObj[i] = x[i]; 
} 

Wenn Sie den myOb anmelden j Variable Sie dieses Ergebnis erhalten

myObj = { 
    0 : "ahmed", 
    1: "mostafa", 
    2: "ebrahem" 
}; 
0

wenn Sie wollen Daten wie folgt gesendet: 582993205d40e67e09f5df28,682993205d40e67e09f5df28

dann müssen u als String senden

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] + ", "; 
    } 
} 
+0

kein suresh ich mag nicht wie Daten senden 582993205d40e67e09f5df28,682993205d40e67e09f5df28 –

+0

ich mag es wie unten Art und Weise –

+0

Zustand \t gesendet: ["57d13f35458f525e4eb61189", "67d13f35458f525e4eb61189"] –

0

Sie ein wenig manipulieren ein bisschen von diesen Daten.

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

foo jetzt ist ein Objekt enter image description here

+0

Spaltung ist kein Funktionsfehler kommen –

+0

Eine weitere Möglichkeit, in dieser Funktion '' 'angular.forEach (statedata, Funktion (element) { output.push (element._id); });' '' 'die element._id' sollte der String nach 'element._id +" "' sein – Finn

0

Das, was Sie manualy das Array in der Query-String serialisiert ist. Lassen Sie Angular den Job für alle GET Parameter, dh übergeben Sie die Parameter als Objekt:

resourcedata(this.baseurl + '/getalldata', { 
    usertype: type, 
    country: $rootScope.country, 
    state: $rootScope.stateconddata, 
    city: $rootScope.citydata, 
    id: id 
}, { 
    query: { 
     method: 'GET', 
     headers: { Accept: 'application/json' } 
    } 
}) 

Dies sollte die state Array in so etwas wie (unter der Annahme state=['x', 'y'] serialisiert:

... Zustand = x = y & Zustand

und soll als eine Anordnung auf der Serverseite verarbeitet werden.

Sie können the documentation on $resource für die Details zur Konfiguration Ihres Dienstes lesen.

Verwandte Themen