2016-06-08 4 views
0

Ich möchte die folgende Struktur erhalten und in der Lage sein, die Benutzerarrays des entsprechenden Schlüssels zu ändern und sie mit einer JSON-Antwort zu senden.Wie kann ich diese Datenstruktur in NodeJS erhalten?

var data = ["A": [user1,user6,user9], "B": [user2], "E": [user3], "S": [user10], "Z": [user7], "J": [user8]] 

data sollte in diesem Format sein, wenn es innerhalb eines jsonObject auf der Client-Seite (Swift) gesendet wird: [String : [User]]

, Das ist, was ich bisher versucht

var dict = []; 
var jsonObject = {}; 
User.find({}, function(err, users) { 
    if (err) { 
     return res.status(500).send(err); 
    } else { 
     users.forEach(function(user) { 
      dict[user.name.substring(0, 1)] = [] 
      dict[user.name.substring(0, 1)].push(user) 
     }); 

    } 
    jsonObject["key"] = dict 
    return res.status(200).json(jsonObject); 

}); 

Obwohl console.log(jsonObject) druckt es richtig, die JSON-Antwort ist:

{ 
    "key": [] 
} 

Auf der Client-Seite (Swift) versuche ich, so etwas zu machen. Aber es gibt Fehler.

.responseJSON(completionHandler: { response -> Void in 
      if let jsonObj = response.result.value { 
       if let result = jsonObj["key"] as? [String: [User]] 
       { 
        var dict : [String: [User]] = result 
          print(dict) 
       } 
               } 
}) 

Hilfe bitte?

+0

Ist 'data' ein Objekt' var data = { "A": [user1, user6, user9], "B": [user2], "E": [Benutzer3], "S": [Benutzer10], "Z": [Benutzer7], "J": [Benutzer8]} ' – Sridhar

+0

Es ist in diesem Format auf der IOS-Seite; [String: [User]] –

Antwort

0

Ich habe diesen Ansatz versucht. Scheint Ihr Bedürfnis nach Daten zu genügen.

var _ = require('lodash'); 

User.find({}, function (err, users) { 
    if (err) { 
    return res.status(500).send(err); 
    } 

    var data = {}; 
    _.each(users, (user) => { 
    var key = user.name.substring(0, 1); 
    var value = data[key]; 
    if (_.isUndefined(value)) { 
     value = []; 
    } 
    value.push(user); 
    data[key] = value; 
    }); 

    return res.status(200).send({ 
    key: data 
    }); 
}); 

Getestet habe ich es mit var users = [{name: 'Andrew'}, {name: 'Blake'}, {name: Cathy'}, {name: 'Anderson'}, {name: 'Bresnan'}];

+0

Hallo, dein Code gibt mir folgendes: {"key": {"S": [{"name": "Sridhar"}]} aber ich brauche sowas {"key": [ "S": [{"name": "Sridhar"}]]}} würde es Ihnen auch etwas ausmachen, die aktualisierte Frage zu überprüfen? Ich habe meine Swift-Codes hinzugefügt –

Verwandte Themen