我有以下查询:
Promise.join<any>(
db.User.findAll({
where: {
email: {
$like: '%'+req.query.q+'%'
}}}),
db.Investor.findAll({
where: {
$or: {
firstName: { $like: req.query.q+'%' },
lastName: { $like: req.query.q+'%' }
}}}),
(users, investors) => {
if (!users && !investors) {
throw new error.NotFoundError('No result match your search criteria!');
} else {
return (users ? users : investors);
}
}
).then((results) => {
...
我怎么知道结果是一组用户还是投资者?它存在快速的方式吗?
答案 0 :(得分:1)
我相信instance.constructor.name应包含您要查找的内容。也可以这样做
Instance instanceof db.User
但是你必须验证数组中的每个条目。您可以使用.map过滤掉任何不是两个
之一的结果results.map( function(result) { return result instanceof db.User || result instanceof db.Investors} )
答案 1 :(得分:0)
您可以更改退货声明,如下所示。
return ( users ? { "users": users } : { "investors": investors } );
并解析返回的地图以获取"users"
或"investors"
个对象。