我有一系列模型,我有类型和密钥。
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中的union)雇员和用户的结果: 让我们说“我们得到的用户”:
用户模型的结果:
[
{
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
}
]
如果我需要更多的校验,请告诉我! 感谢
答案 0 :(得分:1)
你应该保存key
关于信息的信息:
function search(model, next) {
var data = getData(model.type, function(err, data){
if (err) return next(err);
data['__key'] = data[model.key];
next(null, data)
});
}