2016-06-08 45 views
0

我想要獲得以下結構並能夠修改相應鍵的用戶數組,並使用json響應發送它。如何在NodeJS中獲得這個數據結構?

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

data應該是這種格式時,它是一個jsonObject內發送到客戶端(SWIFT):[String : [User]]

這是我試過到目前爲止,

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

}); 

雖然console.log(jsonObject)打印正確,json響應是:

{ 
    "key": [] 
} 

在客戶端(Swift),我試圖做成這樣的東西。但它會給出錯誤。

.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) 
       } 
               } 
}) 

任何幫助請嗎?

+0

是'data'一個對象'VAR數據= { 「A」:[用戶1,user6,USER9], 「B」:[USER2], 「E」: [user3],「S」:[user10],「Z」:[user7],「J」:[user8]}' – Sridhar

+0

它在ios一側是這種格式; [字符串:[用戶]] –

回答

0

我試過這種方法。似乎足以滿足您對數據的需求。

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

var users = [{name: 'Andrew'}, {name: 'Blake'}, {name: Cathy'}, {name: 'Anderson'}, {name: 'Bresnan'}];測試它

+0

你好,你的代碼給我這個:{「key」:{「S」:[{「name」:「Sridhar」}]}但我需要這樣的{「key」:[ 「S」:[{「name」:「Sridhar」}]]},你還會介意檢查更新後的問題嗎?我包含了我的Swift代碼 –

相關問題