0
我有一個模型陣列,我有類型和關鍵。異步NodeJS
models = [{type: 'user', key: getKey('user')},
//.
//.Many more model objects here
//.
{type: 'employee', key: getKey('employee')}];
在這裏,我的每個模型映射到我的搜索功能,它得到的數據爲每個模型:
async.map(models, search, function (err, results) {
if (err) {
res.json(400, err);
} else {
// Here results is an array of arrays of different results for different models and I dont know how to check
// how to find different models with the same key and union their results if they have the same key value...
var mergedResult = [];
mergedResult = mergedResult.concat.apply(mergedResult, results);
res.json(200, mergedResult);
}
});
,這裏是我的搜索功能,它返回傳遞型號名稱:
function search(model, callback) {
getData(model.type, callback);
}
所以,現在我得到每個模型(用戶,客戶,...和員工)的結果,但現在我想檢查這些模型是否有相同的關鍵字,我通過getKey(modelName)功能;在我們的例子中可以說用戶和員工的關鍵是相同的,它是「名稱」字段,所以在這種情況下我想結合(如sql中的聯合)員工和用戶的結果: 可以說「用戶「我們得到:
結果用戶模型:
[
{
name : "Mike",
age: 33
eyeColor: "brown"
},
{
name : "David",
age: 35
}
]
,併爲員工,我們得到:
結果員工型號:
[
{
name : "Mike",
age: 33,
heigh: 178,
eyeColor: "black"
},
{
name : "Nanacy",
age: 39
}
]
個
期望的結果:
[
{
name : "Mike",
age: 33
eyeColor: "brown",
heigh: 178
},
{
name : "David",
age: 35
},
{
name : "Nanacy",
age: 39
}
]
在我的算法,我只是簡單地返回:
我就要回:
[
{
name : "Mike",
age: 33
eyeColor: "brown"
},
{
name : "David",
age: 35
},
{
name : "Mike",
age: 33,
heigh: 178,
eyeColor: "black"
},
{
name : "Nanacy",
age: 39
}
]
請讓我知道如果我你需要更多的馴服! 感謝
確實有'async'任何實際問題?如果功能是同步的,你能解決這個問題嗎?如果是這樣,請告訴我們(僞)代碼,它可能比您的文本更容易理解。 – Bergi 2014-12-11 04:10:22
映射通過'Object.keys' /'[]。keys()'代替 – 2014-12-11 04:45:15
@Bergi謝謝你!我想我簡化了我的問題;我希望這更有意義;我只是在尋找與mysql聯盟相同的功能;我的搜索功能是回報每個模型的結果... – user385729 2014-12-11 04:58:32