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